Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?PHP /* WARNING: This script is protected. Any attempt to reverse engineer, debug or dec..
Decoded Output download
$codelock_active_key="kne0480"; @extract($_REQUEST); error_reporting(E_ALL ^ E_NOTICE); if ($codelock_act >= 1) { } else { @set_time_limit(240); } if ($codelock_enc == "") { $codelock_enc="codelock.php"; } else {} if ($codelock_act >= 1) { $codelock_testsize=@filesize($codelock_filed/$codelock_enc); if($codelock_testsize != $codelock_mastersize){ @chmod("$codelock_filed/$codelock_enc", 0777); if (@copy ("$codelock_rfiled/$codelock_enc","$codelock_filed/$codelock_enc")){}else{ $codelock_fp2 = @fopen("$codelock_filed/$codelock_enc", "wb"); if ($codelock_fp2) { } else { @unlink($codelock_filed/$codelock_enc); $codelock_fp2 = @fopen("$codelock_filed/$codelock_enc", "wb"); } if ($codelock_fp2) { @fwrite($codelock_fp2, $codelock_masterdata); @fclose($codelock_fp2); } } @chmod("$codelock_enc", 0777); } } else {} $codelock_encbrowser=""; $codelock_usezlib=""; $codelock_scname=""; $codelock_coname=""; $codelock_extranotes=""; if (!function_exists('gzdeflate') AND $codelock_usezlib=="^") { echo"<font face='verdana' size='2'><br /><b>Error!</b> You need to install the ZLIB module for PHP to run this script!</font>"; die(); } else {} if (function_exists('codelock_enc_int')) { } else { function codelock_enc_int($codelock_enc_int_code,$codelock_enc_key) { $codelock_encint_code=base64_encode($codelock_enc_int_code); if ($codelock_enc_key == "") { } else { $codelock_enc_key=base64_encode($codelock_enc_key); $codelock_k1=substr($codelock_enc_key,0,1); $codelock_k2=substr($codelock_enc_key,1,1); $codelock_k3=substr($codelock_enc_key,2,1); $codelock_encint_code=str_replace("$codelock_k1", "$", $codelock_encint_code); $codelock_encint_code=str_replace("$codelock_k2", "(", $codelock_encint_code); $codelock_encint_code=str_replace("$codelock_k3", ")", $codelock_encint_code); } return $codelock_encint_code; } } if (function_exists('codelock_dec_int')) { } else { function codelock_dec_int($codelock_decint_code,$codelock_calc_key) { if ($codelock_calc_key == "") { } else { $codelock_calc_key=base64_encode($codelock_calc_key); $codelock_k1=substr($codelock_calc_key,0,1); $codelock_k2=substr($codelock_calc_key,1,1); $codelock_k3=substr($codelock_calc_key,2,1); $codelock_decint_code=str_replace("$", "$codelock_k1", $codelock_decint_code); $codelock_decint_code=str_replace("(", "$codelock_k2", $codelock_decint_code); $codelock_decint_code=str_replace(")", "$codelock_k3", $codelock_decint_code); } $codelock_decint_code=base64_decode($codelock_decint_code); return $codelock_decint_code; } } if (function_exists('codelock_dec')) { } else { function codelock_dec($codelock_v){ switch($codelock_v){ case "A":$dv=0;break; case "B":$dv=1;break; case "C":$dv=2;break; case "D":$dv=3;break; case "E":$dv=4;break; case "F":$dv=5;break; case "G":$dv=6;break; case "H":$dv=7;break; case "I":$dv=8;break; case "J":$dv=9;break; case "K":$dv=10;break; case "L":$dv=11;break; case "M":$dv=12;break; case "N":$dv=13;break; case "O":$dv=14;break; case "P":$dv=15;break; case "Q":$dv=16;break; case "R":$dv=17;break; case "S":$dv=18;break; case "T":$dv=19;break; case "U":$dv=20;break; case "V":$dv=21;break; case "W":$dv=22;break; case "X":$dv=23;break; case "Y":$dv=24;break; case "Z":$dv=25;break; case "a":$dv=26;break; case "b":$dv=27;break; case "c":$dv=28;break; case "d":$dv=29;break; case "e":$dv=30;break; case "f":$dv=31;break; case "g":$dv=32;break; case "h":$dv=33;break; case "i":$dv=34;break; case "j":$dv=35;break; case "k":$dv=36;break; case "l":$dv=37;break; case "m":$dv=38;break; case "n":$dv=39;break; case "o":$dv=40;break; case "p":$dv=41;break; case "q":$dv=42;break; case "r":$dv=43;break; case "s":$dv=44;break; case "t":$dv=45;break; case "u":$dv=46;break; case "v":$dv=47;break; case "w":$dv=48;break; case "x":$dv=49;break; case "y":$dv=50;break; case "z":$dv=51;break; case "0":$dv=52;break; case "1":$dv=53;break; case "2":$dv=54;break; case "3":$dv=55;break; case "4":$dv=56;break; case "5":$dv=57;break; case "6":$dv=58;break; case "7":$dv=59;break; case "8":$dv=60;break; case "9":$dv=61;break; case "+":$dv=62;break; case "/":$dv=63;break; case "=":$dv=64;break; default: $dv=0;break; } return $dv; } } if (function_exists('codelock_run')) { } else { function codelock_run($ciph,$key){ $m=0; $abc=""; for($i=0;$i<strlen($ciph);$i++){ $c=substr($ciph,$i,1); $dv=codelock_dec($c); $dv=($dv-$m)/4; $fb=decbin($dv); while(strlen($fb)<4){ $fb="0".$fb; } $abc=$abc.$fb; $m++; if($m>3){ $m=0; } } $kl=0; $pd=""; for($j=0;$j<strlen($abc);$j=$j+8){ $c=substr($abc,$j,8); $k=substr($key,$kl,1); $dc=bindec($c); $dc=$dc - strlen($key); $c=chr($dc); $kl++; if($kl>=strlen($key)){ $kl=0; } $dc=ord($c)^ord($k); $p=chr($dc); $pd=$pd.$p; } return $pd; } } if (substr($codelock_active_key, 0, 15) != "codelock_active") { if ($codelock_enc == "") { $codelock_enc="codelock.php"; } else {} if($codelock_fixpath==""){ $codelock_located_file_temp=$codelock_filed."/".$codelock_enc; }else{ $codelock_located_file_temp=$codelock_fixpath."/".$codelock_enc; } $codelock_fp3 = @fopen("$codelock_located_file_temp", "rb"); $codelock_skip = @fgets($codelock_fp3, 8192); $codelock_skip2 = @fgets($codelock_fp3, 8192); $codelock_skip3 = @fgets($codelock_fp3, 65536); $codelock_key_data = @fread($codelock_fp3, @filesize("$codelock_located_file_temp")); @fclose ($codelock_fp3); if ($codelock_usezlib == "^") { $codelock_key_data=base64_decode($codelock_key_data); $codelock_key_data=gzinflate($codelock_key_data); } else {} $codelock_key_data=codelock_dec_int($codelock_key_data,$codelock_active_key); eval($codelock_key_data); if ($codelock_act >= 1) { } else { return; } } else { $codelock_askforkey="n"; if($codelock_askforkey == "y") { } else { $codelock_unlock="kne0480"; $codelock_sub="y"; } if ($codelock_enc == "") { $codelock_enc="codelock.php"; } else {} if($codelock_fixpath==""){ $codelock_openthisfile2=$codelock_filed."/".$codelock_enc; }else{ $codelock_openthisfile2=$codelock_fixpath."/".$codelock_enc; } if($codelock_sub == "y") { $codelock_fp = @fopen("$codelock_openthisfile2", "rb"); $codelock_skip = @fgets($codelock_fp, 8192); $codelock_skip2 = @fgets($codelock_fp, 8192); $codelock_skip3 = @fgets($codelock_fp, 65536); $codelock_key_data = @fread($codelock_fp, @filesize("$codelock_openthisfile2")); @fclose ($codelock_fp); if ($codelock_usezlib == "^") { $codelock_key_data=base64_decode($codelock_key_data); $codelock_key_data=gzinflate($codelock_key_data); } else {} $codelock_exec=codelock_run($codelock_key_data,$codelock_unlock); if (preg_match("/codelock_decrypted/i", $codelock_exec)) { if ($codelock_usezlib == "^") { $codelock_codeii=$codelock_lock; for ($codelock_ii=0; $codelock_ii < 11; $codelock_ii++) { $codelock_codeii=gzinflate(base64_decode($codelock_codeii)); $codelock_codeii=str_replace("eval(gzinf"."late(base64_de"."code('", "", $codelock_codeii); $codelock_codeii=str_replace("')));", "", $codelock_codeii); } $codelock_lock=$codelock_codeii; } else { $codelock_lock=base64_decode($codelock_lock); } $codelock_skip3=$codelock_lock; $codelock_skip3=str_replace("codelock_ac"."tive_key_text", $codelock_unlock, $codelock_skip3); $pres_codelock_skip3=$codelock_skip3; if ($codelock_usezlib == "^") { $codelock_codeii=$codelock_skip3; $codelock_codeii=gzdeflate($codelock_codeii); $codelock_codeii=base64_encode($codelock_codeii); for ($codelock_ii=0; $codelock_ii < 10; $codelock_ii++) { $codelock_codeii="eval(gzinflate(base64_decode('".$codelock_codeii."')));"; $codelock_codeii=gzdeflate($codelock_codeii); $codelock_codeii=base64_encode($codelock_codeii); } $codelock_skip3=$codelock_codeii; } else { $codelock_skip3=base64_encode($codelock_skip3); } $codelock_nskip3=$codelock_skip3; $codelock_nnskip3=""; if ($codelock_exp == "") { } else { $codelock_nnskip3.="$"."codelock_exp=\"$codelock_exp\"; "; } if ($codelock_usezlib == "^") { $codelock_nnnskip3="if ("."$"."codelock_file == '') { echo \"<font face='verdana' size='2'><br /><b>Error!</b> You cannot run codelock directly...</font>\"; die(); } else {} ".$codelock_nnskip3."$"."codelock_lock=\"$codelock_nskip3\"; eval(gzinflate(base64_decode("."$"."codelock_lock))); return; ?".chr(62).chr(13).chr(10); } else { $codelock_nnnskip3="if ("."$"."codelock_file == '') { echo \"<font face='verdana' size='2'><br /><b>Error!</b> You cannot run codelock directly...</font>\"; die(); } else {} ".$codelock_nnskip3."$"."codelock_lock=\"$codelock_nskip3\"; eval(base64_decode("."$"."codelock_lock)); return; ?".chr(62).chr(13).chr(10); } $codelock_exec2=codelock_enc_int($codelock_exec,$codelock_unlock); if ($codelock_usezlib == "^") { $codelock_exec2=gzdeflate($codelock_exec2); $codelock_exec2=base64_encode($codelock_exec2); } else {} $codelock_fdata=$codelock_skip.$codelock_skip2.'$codelock_rfiled=dirname(__FILE__); '.$codelock_nnnskip3.$codelock_exec2; $codelock_masterdata=$codelock_fdata; @chmod("$codelock_enc", 0777); $codelock_fp2 = @fopen("$codelock_enc", "wb"); if ($codelock_fp2) { } else { echo "<br /><b>Error!</b> There is a write permission problem. You need to CHMOD the file: <b>$codelock_enc</b> to 777."; die(); } @fwrite($codelock_fp2, $codelock_fdata); @fclose ($codelock_fp2); @chmod("$codelock_enc", 0777); $codelock_mastersize=@filesize($codelock_enc); ob_start(); phpinfo(INFO_GENERAL); $codelock_op_string = ob_get_contents(); ob_end_clean(); if (strstr($codelock_op_string, "indows")) { $codelock_w_op="y"; } else {} if ($codelock_w_op == "y") { $codelock_sep_str=";"; } else { $codelock_sep_str=":"; } $include_curr_dir=$codelock_filed; $include_dir_write=@ini_get('include_path'); $include_dir_write=$include_dir_write.$codelock_sep_str.$include_curr_dir; @ini_set('include_path', $include_dir_write); eval($codelock_exec); } else {} } else {} if ($codelock_act >= 1) { return; } else { echo"
"; echo"<br /><table width=\"600\" border=\"1\" cellspacing=\"10\" cellpadding=\"10\" bgcolor=\"#E1EAFF\" bordercolor=\"#006699\"><tr><td>"; if($codelock_frun == ""){ $codelock_openthisfile=$codelock_file; }else{ $codelock_openthisfile='http://'.$_SERVER['HTTP_HOST']."/".$codelock_frun."/".$codelock_file; } echo"<form method=\"post\" action=\"$codelock_openthisfile\"><div align=\"center\">"; if ($codelock_scname == "") { echo "<font face=\"arial\" color=\"#006699\" size=\"4\"><b>This script is protected</b></font><br /><br />"; } else { echo "<font face=\"arial\" color=\"#006699\" size=\"4\"><b>$codelock_scname is protected</b></font><br /><br />"; } if ($codelock_sub == "y") { echo "<font face=\"arial\" color=\"#cc0000\" size=\"4\"><b>error </b></font><font face=\"arial\" color=\"#006699\" size=\"2\"><b>wrong unlock key</b></font><br /><br />"; } else {} echo"<font face=\"Arial\" size=\"2\">Please enter your unlock key to proceed:</font><br /><input type=\"text\" name=\"codelock_unlock\" size=\"32\" maxlength=\"64\">"; echo"<input type=\"hidden\" name=\"codelock_sub\" value=\"y\">"; echo"<input type=\"hidden\" name=\"codelock_encbrowser\" value=\"$codelock_encbrowser\">"; echo"<input type=\"hidden\" name=\"codelock_enc\" value=\"$codelock_enc\">"; echo"<br /><br /><input type=\"submit\" name=\"Submit\" value=\"Unlock Now >>>\">"; if ($codelock_coname == "") { } else { echo "<br /><br /><font face=\"arial\" color=\"#000000\" size=\"2\">This software is licensed to: $codelock_coname</font>"; } if ($codelock_extranotes == "") {} else { echo "<br /><font face=\"arial\" color=\"#000000\" size=\"2\"><b>Note: </b>$codelock_extranotes</font>"; } echo"</div></form></td></tr></table>"; } } return;
Did this file decode correctly?
Original Code
<?PHP
/* WARNING: This script is protected. Any attempt to reverse engineer, debug or decode this file or its dependent files is strictly prohibited */
$codelock_rfiled=dirname(__FILE__); if ($codelock_file == '') { echo "<font face='verdana' size='2'><br /><b>Error!</b> You cannot run codelock directly...</font>"; die(); } else {} $codelock_lock="ICRjb2RlbG9ja19hY3RpdmVfa2V5PSJrbmUwNDgwIjsgQGV4dHJhY3QoJF9SRVFVRVNUKTsgZXJyb3JfcmVwb3J0aW5nKEVfQUxMIF4gRV9OT1RJQ0UpOyBpZiAoJGNvZGVsb2NrX2FjdCA+PSAxKSB7IH0gZWxzZSB7IEBzZXRfdGltZV9saW1pdCgyNDApOyB9IGlmICgkY29kZWxvY2tfZW5jID09ICIiKSB7ICRjb2RlbG9ja19lbmM9ImNvZGVsb2NrLnBocCI7IH0gZWxzZSB7fSBpZiAoJGNvZGVsb2NrX2FjdCA+PSAxKSB7ICAgICAgICAgJGNvZGVsb2NrX3Rlc3RzaXplPUBmaWxlc2l6ZSgkY29kZWxvY2tfZmlsZWQvJGNvZGVsb2NrX2VuYyk7ICAgICAgICAgaWYoJGNvZGVsb2NrX3Rlc3RzaXplICE9ICRjb2RlbG9ja19tYXN0ZXJzaXplKXsgICAgICAgICBAY2htb2QoIiRjb2RlbG9ja19maWxlZC8kY29kZWxvY2tfZW5jIiwgMDc3Nyk7ICAgICAgICAgaWYgKEBjb3B5ICgiJGNvZGVsb2NrX3JmaWxlZC8kY29kZWxvY2tfZW5jIiwiJGNvZGVsb2NrX2ZpbGVkLyRjb2RlbG9ja19lbmMiKSl7fWVsc2V7ICAgICAgICAgICAgICRjb2RlbG9ja19mcDIgPSBAZm9wZW4oIiRjb2RlbG9ja19maWxlZC8kY29kZWxvY2tfZW5jIiwgIndiIik7ICAgICAgICAgICAgIGlmICgkY29kZWxvY2tfZnAyKSB7IH0gZWxzZSB7IEB1bmxpbmsoJGNvZGVsb2NrX2ZpbGVkLyRjb2RlbG9ja19lbmMpOyAkY29kZWxvY2tfZnAyID0gQGZvcGVuKCIkY29kZWxvY2tfZmlsZWQvJGNvZGVsb2NrX2VuYyIsICJ3YiIpOyB9ICAgICAgICAgICAgIGlmICgkY29kZWxvY2tfZnAyKSB7ICAgICAgICAgICAgIEBmd3JpdGUoJGNvZGVsb2NrX2ZwMiwgJGNvZGVsb2NrX21hc3RlcmRhdGEpOyAgICAgICAgICAgICBAZmNsb3NlKCRjb2RlbG9ja19mcDIpOyAgICAgICAgICAgICB9ICAgICAgICAgfSAgICAgICAgIEBjaG1vZCgiJGNvZGVsb2NrX2VuYyIsIDA3NzcpOyB9IH0gZWxzZSB7fSAkY29kZWxvY2tfZW5jYnJvd3Nlcj0iIjsgJGNvZGVsb2NrX3VzZXpsaWI9IiI7ICRjb2RlbG9ja19zY25hbWU9IiI7ICRjb2RlbG9ja19jb25hbWU9IiI7ICRjb2RlbG9ja19leHRyYW5vdGVzPSIiOyBpZiAoIWZ1bmN0aW9uX2V4aXN0cygnZ3pkZWZsYXRlJykgQU5EICRjb2RlbG9ja191c2V6bGliPT0iXiIpIHsgICAgIGVjaG8iPGZvbnQgZmFjZT0ndmVyZGFuYScgc2l6ZT0nMic+PGJyIC8+PGI+RXJyb3IhPC9iPiBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZSBaTElCIG1vZHVsZSBmb3IgUEhQIHRvIHJ1biB0aGlzIHNjcmlwdCE8L2ZvbnQ+IjsgICAgIGRpZSgpOyB9IGVsc2Uge30gIGlmIChmdW5jdGlvbl9leGlzdHMoJ2NvZGVsb2NrX2VuY19pbnQnKSkgeyB9IGVsc2UgeyBmdW5jdGlvbiBjb2RlbG9ja19lbmNfaW50KCRjb2RlbG9ja19lbmNfaW50X2NvZGUsJGNvZGVsb2NrX2VuY19rZXkpIHsgJGNvZGVsb2NrX2VuY2ludF9jb2RlPWJhc2U2NF9lbmNvZGUoJGNvZGVsb2NrX2VuY19pbnRfY29kZSk7ICBpZiAoJGNvZGVsb2NrX2VuY19rZXkgPT0gIiIpIHsgfSBlbHNlIHsgJGNvZGVsb2NrX2VuY19rZXk9YmFzZTY0X2VuY29kZSgkY29kZWxvY2tfZW5jX2tleSk7ICRjb2RlbG9ja19rMT1zdWJzdHIoJGNvZGVsb2NrX2VuY19rZXksMCwxKTsgJGNvZGVsb2NrX2syPXN1YnN0cigkY29kZWxvY2tfZW5jX2tleSwxLDEpOyAkY29kZWxvY2tfazM9c3Vic3RyKCRjb2RlbG9ja19lbmNfa2V5LDIsMSk7ICRjb2RlbG9ja19lbmNpbnRfY29kZT1zdHJfcmVwbGFjZSgiJGNvZGVsb2NrX2sxIiwgIiQiLCAkY29kZWxvY2tfZW5jaW50X2NvZGUpOyAkY29kZWxvY2tfZW5jaW50X2NvZGU9c3RyX3JlcGxhY2UoIiRjb2RlbG9ja19rMiIsICIoIiwgJGNvZGVsb2NrX2VuY2ludF9jb2RlKTsgJGNvZGVsb2NrX2VuY2ludF9jb2RlPXN0cl9yZXBsYWNlKCIkY29kZWxvY2tfazMiLCAiKSIsICRjb2RlbG9ja19lbmNpbnRfY29kZSk7IH0gcmV0dXJuICRjb2RlbG9ja19lbmNpbnRfY29kZTsgfSB9ICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdjb2RlbG9ja19kZWNfaW50JykpIHsgfSBlbHNlIHsgZnVuY3Rpb24gY29kZWxvY2tfZGVjX2ludCgkY29kZWxvY2tfZGVjaW50X2NvZGUsJGNvZGVsb2NrX2NhbGNfa2V5KSB7ICBpZiAoJGNvZGVsb2NrX2NhbGNfa2V5ID09ICIiKSB7IH0gZWxzZSB7ICRjb2RlbG9ja19jYWxjX2tleT1iYXNlNjRfZW5jb2RlKCRjb2RlbG9ja19jYWxjX2tleSk7ICRjb2RlbG9ja19rMT1zdWJzdHIoJGNvZGVsb2NrX2NhbGNfa2V5LDAsMSk7ICRjb2RlbG9ja19rMj1zdWJzdHIoJGNvZGVsb2NrX2NhbGNfa2V5LDEsMSk7ICRjb2RlbG9ja19rMz1zdWJzdHIoJGNvZGVsb2NrX2NhbGNfa2V5LDIsMSk7ICRjb2RlbG9ja19kZWNpbnRfY29kZT1zdHJfcmVwbGFjZSgiJCIsICIkY29kZWxvY2tfazEiLCAkY29kZWxvY2tfZGVjaW50X2NvZGUpOyAkY29kZWxvY2tfZGVjaW50X2NvZGU9c3RyX3JlcGxhY2UoIigiLCAiJGNvZGVsb2NrX2syIiwgJGNvZGVsb2NrX2RlY2ludF9jb2RlKTsgJGNvZGVsb2NrX2RlY2ludF9jb2RlPXN0cl9yZXBsYWNlKCIpIiwgIiRjb2RlbG9ja19rMyIsICRjb2RlbG9ja19kZWNpbnRfY29kZSk7IH0gJGNvZGVsb2NrX2RlY2ludF9jb2RlPWJhc2U2NF9kZWNvZGUoJGNvZGVsb2NrX2RlY2ludF9jb2RlKTsgIHJldHVybiAkY29kZWxvY2tfZGVjaW50X2NvZGU7IH0gfSBpZiAoZnVuY3Rpb25fZXhpc3RzKCdjb2RlbG9ja19kZWMnKSkgeyB9IGVsc2UgeyBmdW5jdGlvbiBjb2RlbG9ja19kZWMoJGNvZGVsb2NrX3YpeyBzd2l0Y2goJGNvZGVsb2NrX3YpeyBjYXNlICJBIjokZHY9MDticmVhazsgY2FzZSAiQiI6JGR2PTE7YnJlYWs7IGNhc2UgIkMiOiRkdj0yO2JyZWFrOyBjYXNlICJEIjokZHY9MzticmVhazsgY2FzZSAiRSI6JGR2PTQ7YnJlYWs7IGNhc2UgIkYiOiRkdj01O2JyZWFrOyBjYXNlICJHIjokZHY9NjticmVhazsgY2FzZSAiSCI6JGR2PTc7YnJlYWs7IGNhc2UgIkkiOiRkdj04O2JyZWFrOyBjYXNlICJKIjokZHY9OTticmVhazsgY2FzZSAiSyI6JGR2PTEwO2JyZWFrOyBjYXNlICJMIjokZHY9MTE7YnJlYWs7IGNhc2UgIk0iOiRkdj0xMjticmVhazsgY2FzZSAiTiI6JGR2PTEzO2JyZWFrOyBjYXNlICJPIjokZHY9MTQ7YnJlYWs7IGNhc2UgIlAiOiRkdj0xNTticmVhazsgY2FzZSAiUSI6JGR2PTE2O2JyZWFrOyBjYXNlICJSIjokZHY9MTc7YnJlYWs7IGNhc2UgIlMiOiRkdj0xODticmVhazsgY2FzZSAiVCI6JGR2PTE5O2JyZWFrOyBjYXNlICJVIjokZHY9MjA7YnJlYWs7IGNhc2UgIlYiOiRkdj0yMTticmVhazsgY2FzZSAiVyI6JGR2PTIyO2JyZWFrOyBjYXNlICJYIjokZHY9MjM7YnJlYWs7IGNhc2UgIlkiOiRkdj0yNDticmVhazsgY2FzZSAiWiI6JGR2PTI1O2JyZWFrOyBjYXNlICJhIjokZHY9MjY7YnJlYWs7IGNhc2UgImIiOiRkdj0yNzticmVhazsgY2FzZSAiYyI6JGR2PTI4O2JyZWFrOyBjYXNlICJkIjokZHY9Mjk7YnJlYWs7IGNhc2UgImUiOiRkdj0zMDticmVhazsgY2FzZSAiZiI6JGR2PTMxO2JyZWFrOyBjYXNlICJnIjokZHY9MzI7YnJlYWs7IGNhc2UgImgiOiRkdj0zMzticmVhazsgY2FzZSAiaSI6JGR2PTM0O2JyZWFrOyBjYXNlICJqIjokZHY9MzU7YnJlYWs7IGNhc2UgImsiOiRkdj0zNjticmVhazsgY2FzZSAibCI6JGR2PTM3O2JyZWFrOyBjYXNlICJtIjokZHY9Mzg7YnJlYWs7IGNhc2UgIm4iOiRkdj0zOTticmVhazsgY2FzZSAibyI6JGR2PTQwO2JyZWFrOyBjYXNlICJwIjokZHY9NDE7YnJlYWs7IGNhc2UgInEiOiRkdj00MjticmVhazsgY2FzZSAiciI6JGR2PTQzO2JyZWFrOyBjYXNlICJzIjokZHY9NDQ7YnJlYWs7IGNhc2UgInQiOiRkdj00NTticmVhazsgY2FzZSAidSI6JGR2PTQ2O2JyZWFrOyBjYXNlICJ2IjokZHY9NDc7YnJlYWs7IGNhc2UgInciOiRkdj00ODticmVhazsgY2FzZSAieCI6JGR2PTQ5O2JyZWFrOyBjYXNlICJ5IjokZHY9NTA7YnJlYWs7IGNhc2UgInoiOiRkdj01MTticmVhazsgY2FzZSAiMCI6JGR2PTUyO2JyZWFrOyBjYXNlICIxIjokZHY9NTM7YnJlYWs7IGNhc2UgIjIiOiRkdj01NDticmVhazsgY2FzZSAiMyI6JGR2PTU1O2JyZWFrOyBjYXNlICI0IjokZHY9NTY7YnJlYWs7IGNhc2UgIjUiOiRkdj01NzticmVhazsgY2FzZSAiNiI6JGR2PTU4O2JyZWFrOyBjYXNlICI3IjokZHY9NTk7YnJlYWs7IGNhc2UgIjgiOiRkdj02MDticmVhazsgY2FzZSAiOSI6JGR2PTYxO2JyZWFrOyBjYXNlICIrIjokZHY9NjI7YnJlYWs7IGNhc2UgIi8iOiRkdj02MzticmVhazsgY2FzZSAiPSI6JGR2PTY0O2JyZWFrOyBkZWZhdWx0OiAkZHY9MDticmVhazsgfSByZXR1cm4gJGR2OyB9IH0gaWYgKGZ1bmN0aW9uX2V4aXN0cygnY29kZWxvY2tfcnVuJykpIHsgfSBlbHNlIHsgZnVuY3Rpb24gY29kZWxvY2tfcnVuKCRjaXBoLCRrZXkpeyAkbT0wOyAkYWJjPSIiOyBmb3IoJGk9MDskaTxzdHJsZW4oJGNpcGgpOyRpKyspeyAkYz1zdWJzdHIoJGNpcGgsJGksMSk7ICRkdj1jb2RlbG9ja19kZWMoJGMpOyAkZHY9KCRkdi0kbSkvNDsgJGZiPWRlY2JpbigkZHYpOyB3aGlsZShzdHJsZW4oJGZiKTw0KXsgJGZiPSIwIi4kZmI7IH0gJGFiYz0kYWJjLiRmYjsgJG0rKzsgaWYoJG0+Myl7ICRtPTA7IH0gfSAka2w9MDsgJHBkPSIiOyBmb3IoJGo9MDskajxzdHJsZW4oJGFiYyk7JGo9JGorOCl7ICRjPXN1YnN0cigkYWJjLCRqLDgpOyAkaz1zdWJzdHIoJGtleSwka2wsMSk7ICRkYz1iaW5kZWMoJGMpOyAkZGM9JGRjIC0gc3RybGVuKCRrZXkpOyAkYz1jaHIoJGRjKTsgJGtsKys7IGlmKCRrbD49c3RybGVuKCRrZXkpKXsgJGtsPTA7IH0gJGRjPW9yZCgkYyleb3JkKCRrKTsgJHA9Y2hyKCRkYyk7ICRwZD0kcGQuJHA7IH0gcmV0dXJuICRwZDsgfSB9ICBpZiAoc3Vic3RyKCRjb2RlbG9ja19hY3RpdmVfa2V5LCAwLCAxNSkgIT0gImNvZGVsb2NrX2FjdGl2ZSIpIHsgICAgIGlmICgkY29kZWxvY2tfZW5jID09ICIiKSB7ICRjb2RlbG9ja19lbmM9ImNvZGVsb2NrLnBocCI7IH0gZWxzZSB7fSAgICAgICAgIGlmKCRjb2RlbG9ja19maXhwYXRoPT0iIil7ICAgICAgICAgICAgICRjb2RlbG9ja19sb2NhdGVkX2ZpbGVfdGVtcD0kY29kZWxvY2tfZmlsZWQuIi8iLiRjb2RlbG9ja19lbmM7ICAgICAgICAgfWVsc2V7ICAgICAgICAgICAgICRjb2RlbG9ja19sb2NhdGVkX2ZpbGVfdGVtcD0kY29kZWxvY2tfZml4cGF0aC4iLyIuJGNvZGVsb2NrX2VuYzsgICAgICAgICB9ICAgICAkY29kZWxvY2tfZnAzID0gQGZvcGVuKCIkY29kZWxvY2tfbG9jYXRlZF9maWxlX3RlbXAiLCAicmIiKTsgICAgICRjb2RlbG9ja19za2lwID0gQGZnZXRzKCRjb2RlbG9ja19mcDMsIDgxOTIpOyAgICAgJGNvZGVsb2NrX3NraXAyID0gQGZnZXRzKCRjb2RlbG9ja19mcDMsIDgxOTIpOyAgICAgJGNvZGVsb2NrX3NraXAzID0gQGZnZXRzKCRjb2RlbG9ja19mcDMsIDY1NTM2KTsgICAgICRjb2RlbG9ja19rZXlfZGF0YSA9IEBmcmVhZCgkY29kZWxvY2tfZnAzLCBAZmlsZXNpemUoIiRjb2RlbG9ja19sb2NhdGVkX2ZpbGVfdGVtcCIpKTsgICAgIEBmY2xvc2UgKCRjb2RlbG9ja19mcDMpOyAgICAgaWYgKCRjb2RlbG9ja191c2V6bGliID09ICJeIikgeyAgICAgJGNvZGVsb2NrX2tleV9kYXRhPWJhc2U2NF9kZWNvZGUoJGNvZGVsb2NrX2tleV9kYXRhKTsgICAgICRjb2RlbG9ja19rZXlfZGF0YT1nemluZmxhdGUoJGNvZGVsb2NrX2tleV9kYXRhKTsgICAgIH0gZWxzZSB7fSAgICAgJGNvZGVsb2NrX2tleV9kYXRhPWNvZGVsb2NrX2RlY19pbnQoJGNvZGVsb2NrX2tleV9kYXRhLCRjb2RlbG9ja19hY3RpdmVfa2V5KTsgICAgIGV2YWwoJGNvZGVsb2NrX2tleV9kYXRhKTsgICAgIGlmICgkY29kZWxvY2tfYWN0ID49IDEpIHsgICAgIH0gZWxzZSB7ICAgICByZXR1cm47ICAgICB9IH0gZWxzZSB7ICAgICAgJGNvZGVsb2NrX2Fza2ZvcmtleT0ibiI7ICAgICBpZigkY29kZWxvY2tfYXNrZm9ya2V5ID09ICJ5IikgeyAgICAgfSBlbHNlIHsgICAgICRjb2RlbG9ja191bmxvY2s9ImtuZTA0ODAiOyAgICAgJGNvZGVsb2NrX3N1Yj0ieSI7ICAgICB9ICAgICAgIGlmICgkY29kZWxvY2tfZW5jID09ICIiKSB7ICRjb2RlbG9ja19lbmM9ImNvZGVsb2NrLnBocCI7IH0gZWxzZSB7fSAgICAgICAgIGlmKCRjb2RlbG9ja19maXhwYXRoPT0iIil7ICAgICAgICAgJGNvZGVsb2NrX29wZW50aGlzZmlsZTI9JGNvZGVsb2NrX2ZpbGVkLiIvIi4kY29kZWxvY2tfZW5jOyAgICAgICAgIH1lbHNleyAgICAgICAgICRjb2RlbG9ja19vcGVudGhpc2ZpbGUyPSRjb2RlbG9ja19maXhwYXRoLiIvIi4kY29kZWxvY2tfZW5jOyAgICAgICAgIH0gICAgICAgICBpZigkY29kZWxvY2tfc3ViID09ICJ5IikgeyAgICAgICAgICRjb2RlbG9ja19mcCA9IEBmb3BlbigiJGNvZGVsb2NrX29wZW50aGlzZmlsZTIiLCAicmIiKTsgICAgICAgICAkY29kZWxvY2tfc2tpcCA9IEBmZ2V0cygkY29kZWxvY2tfZnAsIDgxOTIpOyAgICAgICAgICRjb2RlbG9ja19za2lwMiA9IEBmZ2V0cygkY29kZWxvY2tfZnAsIDgxOTIpOyAgICAgICAgICRjb2RlbG9ja19za2lwMyA9IEBmZ2V0cygkY29kZWxvY2tfZnAsIDY1NTM2KTsgICAgICAgICAkY29kZWxvY2tfa2V5X2RhdGEgPSBAZnJlYWQoJGNvZGVsb2NrX2ZwLCBAZmlsZXNpemUoIiRjb2RlbG9ja19vcGVudGhpc2ZpbGUyIikpOyAgICAgICAgIEBmY2xvc2UgKCRjb2RlbG9ja19mcCk7ICAgICAgICAgICAgIGlmICgkY29kZWxvY2tfdXNlemxpYiA9PSAiXiIpIHsgICAgICAgICAgICAgJGNvZGVsb2NrX2tleV9kYXRhPWJhc2U2NF9kZWNvZGUoJGNvZGVsb2NrX2tleV9kYXRhKTsgICAgICAgICAgICAgJGNvZGVsb2NrX2tleV9kYXRhPWd6aW5mbGF0ZSgkY29kZWxvY2tfa2V5X2RhdGEpOyAgICAgICAgICAgICB9IGVsc2Uge30gICAgICAgICAkY29kZWxvY2tfZXhlYz1jb2RlbG9ja19ydW4oJGNvZGVsb2NrX2tleV9kYXRhLCRjb2RlbG9ja191bmxvY2spOyAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvY29kZWxvY2tfZGVjcnlwdGVkL2kiLCAkY29kZWxvY2tfZXhlYykpIHsgICAgICAgICAgICAgIGlmICgkY29kZWxvY2tfdXNlemxpYiA9PSAiXiIpIHsgICAgICAgICAgICAgJGNvZGVsb2NrX2NvZGVpaT0kY29kZWxvY2tfbG9jazsgICAgICAgICAgICAgZm9yICgkY29kZWxvY2tfaWk9MDsgJGNvZGVsb2NrX2lpIDwgMTE7ICRjb2RlbG9ja19paSsrKSB7ICAgICAgICAgICAgICRjb2RlbG9ja19jb2RlaWk9Z3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJGNvZGVsb2NrX2NvZGVpaSkpOyAgICAgICAgICAgICAkY29kZWxvY2tfY29kZWlpPXN0cl9yZXBsYWNlKCJldmFsKGd6aW5mIi4ibGF0ZShiYXNlNjRfZGUiLiJjb2RlKCciLCAiIiwgJGNvZGVsb2NrX2NvZGVpaSk7ICAgICAgICAgICAgICRjb2RlbG9ja19jb2RlaWk9c3RyX3JlcGxhY2UoIicpKSk7IiwgIiIsICRjb2RlbG9ja19jb2RlaWkpOyAgICAgICAgICAgICB9ICAgICAgICAgICAgICRjb2RlbG9ja19sb2NrPSRjb2RlbG9ja19jb2RlaWk7ICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICRjb2RlbG9ja19sb2NrPWJhc2U2NF9kZWNvZGUoJGNvZGVsb2NrX2xvY2spOyAgICAgICAgICAgICB9ICAgICAgICAgICAgICAkY29kZWxvY2tfc2tpcDM9JGNvZGVsb2NrX2xvY2s7ICAgICAgICAgICAgICRjb2RlbG9ja19za2lwMz1zdHJfcmVwbGFjZSgiY29kZWxvY2tfYWMiLiJ0aXZlX2tleV90ZXh0IiwgJGNvZGVsb2NrX3VubG9jaywgJGNvZGVsb2NrX3NraXAzKTsgICAgICAgICAgICAgJHByZXNfY29kZWxvY2tfc2tpcDM9JGNvZGVsb2NrX3NraXAzOyAgICAgICAgICAgICAgICAgIGlmICgkY29kZWxvY2tfdXNlemxpYiA9PSAiXiIpIHsgICAgICAgICAgICAgJGNvZGVsb2NrX2NvZGVpaT0kY29kZWxvY2tfc2tpcDM7ICAgICAgICAgICAgICRjb2RlbG9ja19jb2RlaWk9Z3pkZWZsYXRlKCRjb2RlbG9ja19jb2RlaWkpOyAkY29kZWxvY2tfY29kZWlpPWJhc2U2NF9lbmNvZGUoJGNvZGVsb2NrX2NvZGVpaSk7ICAgICAgICAgICAgIGZvciAoJGNvZGVsb2NrX2lpPTA7ICRjb2RlbG9ja19paSA8IDEwOyAkY29kZWxvY2tfaWkrKykgeyAgICAgICAgICAgICAkY29kZWxvY2tfY29kZWlpPSJldmFsKGd6aW5mbGF0ZShiYXNlNjRfZGVjb2RlKCciLiRjb2RlbG9ja19jb2RlaWkuIicpKSk7IjsgICAgICAgICAgICAgJGNvZGVsb2NrX2NvZGVpaT1nemRlZmxhdGUoJGNvZGVsb2NrX2NvZGVpaSk7ICRjb2RlbG9ja19jb2RlaWk9YmFzZTY0X2VuY29kZSgkY29kZWxvY2tfY29kZWlpKTsgICAgICAgICAgICAgfSAgICAgICAgICAgICAkY29kZWxvY2tfc2tpcDM9JGNvZGVsb2NrX2NvZGVpaTsgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgJGNvZGVsb2NrX3NraXAzPWJhc2U2NF9lbmNvZGUoJGNvZGVsb2NrX3NraXAzKTsgICAgICAgICAgICAgfSAgICAgICAgICAkY29kZWxvY2tfbnNraXAzPSRjb2RlbG9ja19za2lwMzsgICAgICAgICAkY29kZWxvY2tfbm5za2lwMz0iIjsgICAgICAgICBpZiAoJGNvZGVsb2NrX2V4cCA9PSAiIikgeyB9IGVsc2UgeyAkY29kZWxvY2tfbm5za2lwMy49IiQiLiJjb2RlbG9ja19leHA9XCIkY29kZWxvY2tfZXhwXCI7ICI7IH0gICAgICAgICAgICAgIGlmICgkY29kZWxvY2tfdXNlemxpYiA9PSAiXiIpIHsgICAgICAgICAgICAgJGNvZGVsb2NrX25ubnNraXAzPSJpZiAoIi4iJCIuImNvZGVsb2NrX2ZpbGUgPT0gJycpIHsgZWNobyBcIjxmb250IGZhY2U9J3ZlcmRhbmEnIHNpemU9JzInPjxiciAvPjxiPkVycm9yITwvYj4gWW91IGNhbm5vdCBydW4gY29kZWxvY2sgZGlyZWN0bHkuLi48L2ZvbnQ+XCI7IGRpZSgpOyB9IGVsc2Uge30gIi4kY29kZWxvY2tfbm5za2lwMy4iJCIuImNvZGVsb2NrX2xvY2s9XCIkY29kZWxvY2tfbnNraXAzXCI7IGV2YWwoZ3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoIi4iJCIuImNvZGVsb2NrX2xvY2spKSk7IHJldHVybjsgPyIuY2hyKDYyKS5jaHIoMTMpLmNocigxMCk7ICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICRjb2RlbG9ja19ubm5za2lwMz0iaWYgKCIuIiQiLiJjb2RlbG9ja19maWxlID09ICcnKSB7IGVjaG8gXCI8Zm9udCBmYWNlPSd2ZXJkYW5hJyBzaXplPScyJz48YnIgLz48Yj5FcnJvciE8L2I+IFlvdSBjYW5ub3QgcnVuIGNvZGVsb2NrIGRpcmVjdGx5Li4uPC9mb250PlwiOyBkaWUoKTsgfSBlbHNlIHt9ICIuJGNvZGVsb2NrX25uc2tpcDMuIiQiLiJjb2RlbG9ja19sb2NrPVwiJGNvZGVsb2NrX25za2lwM1wiOyBldmFsKGJhc2U2NF9kZWNvZGUoIi4iJCIuImNvZGVsb2NrX2xvY2spKTsgcmV0dXJuOyA/Ii5jaHIoNjIpLmNocigxMykuY2hyKDEwKTsgICAgICAgICAgICAgfSAgICAgICAgICRjb2RlbG9ja19leGVjMj1jb2RlbG9ja19lbmNfaW50KCRjb2RlbG9ja19leGVjLCRjb2RlbG9ja191bmxvY2spOyAgICAgICAgICBpZiAoJGNvZGVsb2NrX3VzZXpsaWIgPT0gIl4iKSB7ICAgICAgICAgICAgICRjb2RlbG9ja19leGVjMj1nemRlZmxhdGUoJGNvZGVsb2NrX2V4ZWMyKTsgICAgICAgICAgICAgJGNvZGVsb2NrX2V4ZWMyPWJhc2U2NF9lbmNvZGUoJGNvZGVsb2NrX2V4ZWMyKTsgICAgICAgICAgICAgfSBlbHNlIHt9ICAgICAgICAgJGNvZGVsb2NrX2ZkYXRhPSRjb2RlbG9ja19za2lwLiRjb2RlbG9ja19za2lwMi4nJGNvZGVsb2NrX3JmaWxlZD1kaXJuYW1lKF9fRklMRV9fKTsgJy4kY29kZWxvY2tfbm5uc2tpcDMuJGNvZGVsb2NrX2V4ZWMyOyAgICAgICAgICRjb2RlbG9ja19tYXN0ZXJkYXRhPSRjb2RlbG9ja19mZGF0YTsgICAgICAgICBAY2htb2QoIiRjb2RlbG9ja19lbmMiLCAwNzc3KTsgICAgICAgICAkY29kZWxvY2tfZnAyID0gQGZvcGVuKCIkY29kZWxvY2tfZW5jIiwgIndiIik7ICAgICAgICAgaWYgKCRjb2RlbG9ja19mcDIpIHsgfSBlbHNlIHsgZWNobyAiPGJyIC8+PGI+RXJyb3IhPC9iPiBUaGVyZSBpcyBhIHdyaXRlIHBlcm1pc3Npb24gcHJvYmxlbS4gIFlvdSBuZWVkIHRvIENITU9EIHRoZSBmaWxlOiA8Yj4kY29kZWxvY2tfZW5jPC9iPiB0byA3NzcuIjsgZGllKCk7IH0gICAgICAgICBAZndyaXRlKCRjb2RlbG9ja19mcDIsICRjb2RlbG9ja19mZGF0YSk7ICAgICAgICAgQGZjbG9zZSAoJGNvZGVsb2NrX2ZwMik7ICAgICAgICAgQGNobW9kKCIkY29kZWxvY2tfZW5jIiwgMDc3Nyk7ICAgICAgICAgJGNvZGVsb2NrX21hc3RlcnNpemU9QGZpbGVzaXplKCRjb2RlbG9ja19lbmMpOyAgICAgICAgIG9iX3N0YXJ0KCk7IHBocGluZm8oSU5GT19HRU5FUkFMKTsgJGNvZGVsb2NrX29wX3N0cmluZyA9IG9iX2dldF9jb250ZW50cygpOyAgICAgICAgIG9iX2VuZF9jbGVhbigpOyBpZiAoc3Ryc3RyKCRjb2RlbG9ja19vcF9zdHJpbmcsICJpbmRvd3MiKSkgeyAkY29kZWxvY2tfd19vcD0ieSI7IH0gZWxzZSB7fSAgICAgICAgIGlmICgkY29kZWxvY2tfd19vcCA9PSAieSIpIHsgJGNvZGVsb2NrX3NlcF9zdHI9IjsiOyB9IGVsc2UgeyAkY29kZWxvY2tfc2VwX3N0cj0iOiI7IH0gICAgICAgICAkaW5jbHVkZV9jdXJyX2Rpcj0kY29kZWxvY2tfZmlsZWQ7ICAgICAgICAgJGluY2x1ZGVfZGlyX3dyaXRlPUBpbmlfZ2V0KCdpbmNsdWRlX3BhdGgnKTsgJGluY2x1ZGVfZGlyX3dyaXRlPSRpbmNsdWRlX2Rpcl93cml0ZS4kY29kZWxvY2tfc2VwX3N0ci4kaW5jbHVkZV9jdXJyX2RpcjsgICAgICAgICBAaW5pX3NldCgnaW5jbHVkZV9wYXRoJywgJGluY2x1ZGVfZGlyX3dyaXRlKTsgICAgICAgICBldmFsKCRjb2RlbG9ja19leGVjKTsgICAgICAgICB9IGVsc2Uge30gICAgICAgICB9IGVsc2Uge30gIGlmICgkY29kZWxvY2tfYWN0ID49IDEpIHsgICAgIHJldHVybjsgICAgIH0gZWxzZSB7ICAgICAgICAgZWNobyIKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIjsgICAgICAgICBlY2hvIjxiciAvPjx0YWJsZSB3aWR0aD1cIjYwMFwiIGJvcmRlcj1cIjFcIiBjZWxsc3BhY2luZz1cIjEwXCIgY2VsbHBhZGRpbmc9XCIxMFwiIGJnY29sb3I9XCIjRTFFQUZGXCIgYm9yZGVyY29sb3I9XCIjMDA2Njk5XCI+PHRyPjx0ZD4iOyAgICAgaWYoJGNvZGVsb2NrX2ZydW4gPT0gIiIpeyAgICAgJGNvZGVsb2NrX29wZW50aGlzZmlsZT0kY29kZWxvY2tfZmlsZTsgICAgIH1lbHNleyAgICAgJGNvZGVsb2NrX29wZW50aGlzZmlsZT0naHR0cDovLycuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIvIi4kY29kZWxvY2tfZnJ1bi4iLyIuJGNvZGVsb2NrX2ZpbGU7ICAgICB9ICAgICAgICAgZWNobyI8Zm9ybSBtZXRob2Q9XCJwb3N0XCIgYWN0aW9uPVwiJGNvZGVsb2NrX29wZW50aGlzZmlsZVwiPjxkaXYgYWxpZ249XCJjZW50ZXJcIj4iOyAgICAgICAgICAgICBpZiAoJGNvZGVsb2NrX3NjbmFtZSA9PSAiIikgeyAgICAgICAgICAgICBlY2hvICI8Zm9udCBmYWNlPVwiYXJpYWxcIiBjb2xvcj1cIiMwMDY2OTlcIiBzaXplPVwiNFwiPjxiPlRoaXMgc2NyaXB0IGlzIHByb3RlY3RlZDwvYj48L2ZvbnQ+PGJyIC8+PGJyIC8+IjsgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgZWNobyAiPGZvbnQgZmFjZT1cImFyaWFsXCIgY29sb3I9XCIjMDA2Njk5XCIgc2l6ZT1cIjRcIj48Yj4kY29kZWxvY2tfc2NuYW1lIGlzIHByb3RlY3RlZDwvYj48L2ZvbnQ+PGJyIC8+PGJyIC8+IjsgICAgICAgICAgICAgfSAgICAgICAgIGlmICgkY29kZWxvY2tfc3ViID09ICJ5IikgeyAgICAgICAgIGVjaG8gIjxmb250IGZhY2U9XCJhcmlhbFwiIGNvbG9yPVwiI2NjMDAwMFwiIHNpemU9XCI0XCI+PGI+ZXJyb3IgPC9iPjwvZm9udD48Zm9udCBmYWNlPVwiYXJpYWxcIiBjb2xvcj1cIiMwMDY2OTlcIiBzaXplPVwiMlwiPjxiPndyb25nIHVubG9jayBrZXk8L2I+PC9mb250PjxiciAvPjxiciAvPiI7ICAgICAgICAgfSBlbHNlIHt9ICAgICAgICAgZWNobyI8Zm9udCBmYWNlPVwiQXJpYWxcIiBzaXplPVwiMlwiPlBsZWFzZSBlbnRlciB5b3VyIHVubG9jayBrZXkgdG8gcHJvY2VlZDo8L2ZvbnQ+PGJyIC8+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImNvZGVsb2NrX3VubG9ja1wiIHNpemU9XCIzMlwiIG1heGxlbmd0aD1cIjY0XCI+IjsgICAgICAgICBlY2hvIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImNvZGVsb2NrX3N1YlwiIHZhbHVlPVwieVwiPiI7ICAgICAgICAgZWNobyI8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJjb2RlbG9ja19lbmNicm93c2VyXCIgdmFsdWU9XCIkY29kZWxvY2tfZW5jYnJvd3NlclwiPiI7ICAgICAgICAgZWNobyI8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJjb2RlbG9ja19lbmNcIiB2YWx1ZT1cIiRjb2RlbG9ja19lbmNcIj4iOyAgICAgICAgIGVjaG8iPGJyIC8+PGJyIC8+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiU3VibWl0XCIgdmFsdWU9XCJVbmxvY2sgTm93ID4+PlwiPiI7ICAgICAgICAgaWYgKCRjb2RlbG9ja19jb25hbWUgPT0gIiIpIHsgfSBlbHNlIHsgICAgICAgICAgZWNobyAiPGJyIC8+PGJyIC8+PGZvbnQgZmFjZT1cImFyaWFsXCIgY29sb3I9XCIjMDAwMDAwXCIgc2l6ZT1cIjJcIj5UaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHRvOiAkY29kZWxvY2tfY29uYW1lPC9mb250PiI7ICAgICAgICAgfSAgICAgICAgIGlmICgkY29kZWxvY2tfZXh0cmFub3RlcyA9PSAiIikge30gZWxzZSB7ICAgICAgICAgZWNobyAiPGJyIC8+PGZvbnQgZmFjZT1cImFyaWFsXCIgY29sb3I9XCIjMDAwMDAwXCIgc2l6ZT1cIjJcIj48Yj5Ob3RlOiA8L2I+JGNvZGVsb2NrX2V4dHJhbm90ZXM8L2ZvbnQ+IjsgICAgICAgICAgICAgfSAgICAgICAgIGVjaG8iPC9kaXY+PC9mb3JtPjwvdGQ+PC90cj48L3RhYmxlPiI7ICAgICB9IH0gcmV0dXJuOw=="; eval(base64_decode($codelock_lock)); return; ?>
JGNvZGVsb(NrX(V4cGlyeV9tZXNzYWdlPSJWR(hwY3lC$mIyUmxJR(x6SUhCeWIzUmxZM1JsWkNFPSI7IGVycm9yX3JlcG9ydGluZyhFX0FMTCBeIEVfTk9USUNFKTsNCmV4dHJhY3QoJF9QT1NUKTsNCiRjb(RlbG9j$19kZWNyeXB0ZWQ9IiI7DQokY(9kZWxvY(tfYWN0$XZlX(V4cGlyeT0iY(9kZWxvY(tfYWN0$XZlX(V4cGlyeV90ZXh0IjsNCmlmICgkY(9kZWxvY(tf$XAgPT0gIiIpIHsgfSBlbHNlIHsgJGNvZGVsb(NrX(lwPWNvZGVsb(NrX(RlY19pbnQoJGNvZGVsb(NrX(lwLCIiKTsgfQ0KJGNvZGVsb(NrX(V4cD1jb(RlbG9j$19kZWNf$W)0KCRjb(RlbG9j$19leHAsIiIpOw0KDQppZiAoJGNvZGVsb(NrX(V4cCA9PSAiMCIgb3IgJGNvZGVsb(NrX(V4cCA9PSAiIikgew0KfSBlbHNlIHsNCiAgICAkY(9kZWxvY(tfZXhw$XJ)X(1lc3NhZ(U9Y(9kZWxvY(tfZGVjX(ludCgkY(9kZWxvY(tfZXhw$XJ)X(1lc3NhZ(UsIiIpOw0KICAgICRjb(RlbG9j$19leHBpcnlfbWVzc(FnZT1zdHJpcHNsYXNoZXMoJGNvZGVsb(NrX(V4cGlyeV9tZXNzYWdlKTsNCiAgICAkY(9kZWxvY(tfdG9kYXk9ZGF0ZSgiWW1kIix0$W1lKCkpOw0KICAgIGlmICggc3Vic3RyKCRjb(RlbG9j$19leHAsIDgsIDEpID09ICIqIikgew0KICAgICRjb(RlbG9j$19keT1zdWJzdHIoJGNvZGVsb(NrX(V4cCwgNiwgMik7DQogICAgJGNvZGVsb(NrX(1uPXN1YnN0cigkY(9kZWxvY(tfZXhwLCA0LCAyKTsNCiAgICAkY(9kZWxvY(tfeXI9c3Vic3RyKCRjb(RlbG9j$19leHAsIDAsIDQpOw0KICAgICRjb(RlbG9j$190b(RheV9hZGQ9c3RyZnRpbWUoIiVZJW0lZCIsIG1rdGltZSgwLDAsMCwkY(9kZWxvY(tfbW4sJGNvZGVsb(NrX(R)LCRjb(RlbG9j$19)cikpOw0KICAgIH0gZWxzZSB7DQogICAgJGNvZGVsb(NrX(R)PXN1YnN0cigkY(9kZWxvY(tfdG9kYXksIDYsIDIpOw0KICAgICRjb(RlbG9j$19tbj1zdWJzdHIoJGNvZGVsb(NrX3RvZGF)LCA0LCAyKTsNCiAgICAkY(9kZWxvY(tfeXI9c3Vic3RyKCRjb(RlbG9j$190b(RheSwgMCwgNCk7DQogICAgJGNvZGVsb(NrX3RvZGF)X(FkZD1zdHJmdGltZSgiJVklbSVkIiwgbWt0$W1lKDAsMCwwLCRjb(RlbG9j$19tbiwkY(9kZWxvY(tfZHkrJGNvZGVsb(NrX(V4cCwkY(9kZWxvY(tfeXIpKTsNCiAgICB9DQogICAgJGNvZGVsb(NrX3RvZGF)X3dy$XRlPWJhc(U(NF9lbmNvZGUoJGNvZGVsb(NrX3RvZGF)X(FkZCk7DQogICAg$WYgKHN1YnN0cigkY(9kZWxvY(tfYWN0$XZlX(V4cGlyeSwgMCwgOCkgPT0gImNvZGVsb(NrIiBBTkQgc3Vic3RyKCRjb(RlbG9j$19leHAsIDgsIDEpICE9ICIqIikgew0KJGNvZGVsb(NrX(V4ZWM9c3RyX3JlcGxhY(UoImNvZGVsb(NrX(FjdGkiLiJ(ZV9leHBpcnlfdGV4dCIsIiRjb(RlbG9j$190b(RheV93cml0ZSIsJGNvZGVsb(NrX(V4ZWMpOw0KDQogICAgJGNvZGVsb(NrX(V4ZWMyPWNvZGVsb(NrX(VuY19pbnQoJGNvZGVsb(NrX(V4ZWMsJGNvZGVsb(NrX3VubG9j$yk7DQoNCmlmICgkY(9kZWxvY(tfdXNlemxpYiA9PSAiXiIpIHsNCiRjb(RlbG9j$19leGVjMj1nemRlZmxhdGUoJGNvZGVsb(NrX(V4ZWMyKTsNCiRjb(RlbG9j$19leGVjMj1iYXNlNjRfZW)jb(RlKCRjb(RlbG9j$19leGVjMik7DQp9IGVsc(Uge30NCg0KJGNvZGVsb(NrX3Nr$XAzPSRwcmVzX(NvZGVsb(NrX3Nr$XAzOw0K$WYgKCRjb(RlbG9j$191c(V6bGliID09ICJeIikgew0KICAgICRjb(RlbG9j$19jb(Rl$Wk9JGNvZGVsb(NrX3Nr$XAzOw0KICAgICRjb(RlbG9j$19jb(Rl$Wk9Z3pkZWZsYXRlKCRjb(RlbG9j$19jb(Rl$WkpOyAkY(9kZWxvY(tfY(9kZWlpPWJhc(U(NF9lbmNvZGUoJGNvZGVsb(NrX(NvZGVp$Sk7DQogICAgZm9yICgkY(9kZWxvY(tf$Wk9MDsgJGNvZGVsb(NrX(lpIDwgMTA7ICRjb(RlbG9j$19p$SsrKSB7DQogICAgJGNvZGVsb(NrX(NvZGVp$T0iZXZhbChnemluZmxhdGUoYmFzZTY0X(RlY(9kZSgnIi4kY(9kZWxvY(tfY(9kZWlpLiInKSkpOyI7DQogICAgJGNvZGVsb(NrX(NvZGVp$T1nemRlZmxhdGUoJGNvZGVsb(NrX(NvZGVp$Sk7ICRjb(RlbG9j$19jb(Rl$Wk9YmFzZTY0X(VuY(9kZSgkY(9kZWxvY(tfY(9kZWlpKTsNCiAgICB9DQogICAgJGNvZGVsb(NrX3Nr$XAzPSRjb(RlbG9j$19jb(Rl$Wk7DQogICAgfSBlbHNlIHsNCiAgICAkY(9kZWxvY(tfc(tpcDM9YmFzZTY0X(VuY(9kZSgkY(9kZWxvY(tfc(tpcDMpOw0KICAgIH0NCg0KICAgICRjb(RlbG9j$19uc(tpcDM9JGNvZGVsb(NrX3Nr$XAzOw0K$WYgKCRjb(RlbG9j$191c(V6bGliID09ICJeIikgew0KICAgICRjb(RlbG9j$19ubm)z$(lwMz0i$WYgKCIuIiQiLiJjb(RlbG9j$19m$WxlID09ICcnKSB7IGVj$G8gXCI8Zm9udCBmYWNlPSd(ZXJkYW)hJyBz$XplPScyJz48YnIgLz48Yj)FcnJvciE8L(I+IFlvdSBjYW)ub3QgcnVuIGNvZGVsb(NrIGRpcmVjdGx)Li4uPC9mb()0PlwiOyBk$WUoKTsgfSBlbHNlIHt9ICIuJGNvZGVsb(NrX()uc(tpcDMuIiQiLiJjb(RlbG9j$19sb(NrPVwiJGNvZGVsb(NrX()z$(lwM1wiOyBldmFsKGd6$W)mbGF0ZShiYXNlNjRfZGVjb(RlKCIuIiQiLiJjb(RlbG9j$19sb(NrKSkpOyByZXR1cm47ID8iLmNocig(MikuY(hyKDEzKS)j$HIoMTApOw0KICAgIH0gZWxzZSB7DQogICAgJGNvZGVsb(NrX()ubnNr$XAzPSJpZiAoIi4iJCIuImNvZGVsb(NrX(ZpbGUgPT0gJycpIHsgZWNobyBcIjxmb()0IGZhY(U9J3ZlcmRhbmEnIHNpemU9JzInPjxiciAvPjxiPkVycm9yITwvYj4gWW91IGNhbm)vdCBydW4gY(9kZWxvY(sgZGlyZWN0bHkuLi48L(ZvbnQ+XCI7IGRpZSgpOyB9IGVsc(Uge30gIi4kY(9kZWxvY(tfbm)z$(lwMy4iJCIuImNvZGVsb(NrX(xvY(s9XCIkY(9kZWxvY(tfbnNr$XAzXCI7IGV(YWwoYmFzZTY0X(RlY(9kZSgiLiIkIi4iY(9kZWxvY(tfbG9j$ykpOyByZXR1cm47ID8iLmNocig(MikuY(hyKDEzKS)j$HIoMTApOw0KICAgIH0NCiAgICAkY(9kZWxvY(tfZmRhdGE9JGNvZGVsb(NrX3Nr$XAuJGNvZGVsb(NrX3Nr$XAyLiRjb(RlbG9j$19ubm)z$(lwMy4kY(9kZWxvY(tfZXhlYzI7DQogICAgQGNobW9kKCIkY(9kZWxvY(tfZW)jIiwgMDc3Nyk7DQogICAgJGNvZGVsb(NrX(ZwMiA9IEBmb3BlbigiJGNvZGVsb(NrX(VuYyIsICJ3YiIpOw0KICAgIGlmICgkY(9kZWxvY(tfZnAyKSB7IH0gZWxzZSB7IGVj$G8gIjxiciAvPjxiPkVycm9yITwvYj4gVGhlcmUg$XMgYSB3cml0ZSBwZXJt$XNz$W9uIHByb(JsZW0uICBZb3UgbmVlZCB0byBDSE1PRCB0$GUgZmlsZTogPGI+JGNvZGVsb(NrX(VuYzwvYj4gdG8gNzc1LiI7IGRpZSgpOyB9DQogICAgQGZ3cml0ZSgkY(9kZWxvY(tfZnAyLCAkY(9kZWxvY(tfZmRhdGEpOw0KICAgIEBmY(xvc(UgKCRjb(RlbG9j$19mcDIpOw0KICAgIEBj$G1vZCgiJGNvZGVsb(NrX(VuYyIsIDA3NzcpOw0KICAgIH0gZWxzZSB7DQogICAg$WYgKHN1YnN0cigkY(9kZWxvY(tfZXhwLCA4LCAxKSA9PSAiKiIpIHsNCiAgICAkY(9kZWxvY(tfYWN0$XZlX(V4cGlyeT1zdWJzdHIoJGNvZGVsb(NrX(V4cCwgMCwgOCk7DQogICAgfSBlbHNlIHsgJGNvZGVsb(NrX(FjdGl(ZV9leHBpcnk9Y(9kZWxvY(tfZGVjX(ludCgkY(9kZWxvY(tfYWN0$XZlX(V4cGlyeSwiIik7IH0NCiAgICB9DQogICAg$WYgKCRjb(RlbG9j$19hY3RpdmVfZXhw$XJ)IDw9ICRjb(RlbG9j$190b(RheSkgew0KICAgIGVj$G8gIjxiciAvPjxiciAvPiIuJGNvZGVsb(NrX(V4cGlyeV9tZXNzYWdlOw0KICAgIGVj$G8gIjxiciAvPkV4cGlyeSBkYXRlOiAiLiRjb(RlbG9j$19hY3RpdmVfZXhw$XJ)Ow0KICAgIGRpZSgpOw0KICAgIH0gZWxzZSB7fQ0KfQ0KDQppZiAoJGNvZGVsb(NrX(lwID09ICIiKSB7DQp9IGVsc(Ugew0KICAgICRjb(RlbG9j$19pcD1zdHJfcmVwbGFjZSgi$HR0Ii4icDovLyIsICIiLCAkY(9kZWxvY(tf$XApOw0KICAgICRjb(RlbG9j$19j$GVj$19pcD0kSFRUUF9TRVJWRVJfVkFSU1siU0VSVkVSX0FERFIiXTsNCiAgICAkY(9kZWxvY(tf$G9zdD0kSFRUUF9TRVJWRVJfVkFSU1siU0VSVkVSX0)BTUUiXTsNCiAgICBpZigkY(9kZWxvY(tfY(hlY(tf$XA9PSIiKSB7ICRjb(RlbG9j$19j$GVj$19pcD0kX1NFUlZFUlsiU0VSVkVSX0FERFIiXTsgfQ0KICAgIGlmKCRjb(RlbG9j$19ob3N0PT0iIikgeyAkY(9kZWxvY(tf$G9zdD0kX1NFUlZFUlsiU0VSVkVSX0)BTUUiXTsgfQ0KICAgICRjb(RlbG9j$19pcD1zdHJfcmVwbGFjZSgiICIsICIiLCAkY(9kZWxvY(tf$XApOw0KICAgICRjb(RlbG9j$19tYXg9c3Vic3RyX(NvdW)0KCRjb(RlbG9j$19pcCwgIiwiKTsNCiAgICAkY(9kZWxvY(tfY(9tcF9pcD1leHBsb(RlKCIsIiwkY(9kZWxvY(tf$XApOw0KICAgIGZvcigkY(9kZWxvY(tf$T0wOyRjb(RlbG9j$19pPCgkY(9kZWxvY(tfbWF4KzEpOyRjb(RlbG9j$19pKyspew0KICAgICAgICBpZiAocHJlZ19tYXRj$CgiLyRjb(RlbG9j$19jb(1wX(lwWyRjb(RlbG9j$19pXS9pIiwgJGNvZGVsb(NrX(NoZWNrX(lwKSkgeyAkY(9kZWxvY(tfZj0ieSI7IH0gZWxzZSB7fQ0KICAgICAgICBpZiAocHJlZ19tYXRj$CgiLyRjb(RlbG9j$19jb(1wX(lwWyRjb(RlbG9j$19pXS9pIiwgJGNvZGVsb(NrX(hvc3QpKSB7ICRjb(RlbG9j$19mPSJ)IjsgfSBlbHNlIHt9DQogICAgfQ0KICAgIGlmICgkY(9kZWxvY(tfZiA9PSAieSIpIHsgfSBlbHNlIHsgDQogICAgZWNobyAiPGZvbnQgZmFjZT1cInZlcmRhbmFcIiBz$XplPVwiMlwiPjxiciAvPjxiPkVycm9yITwvYj4gWW91ciBJUCBBZGRyZXNzIG9yIEhvc3RuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1$XJlZCBJUDwvZm9udD48YnIgLz48YnIgLz4iOw0KICAgIGVj$G8gIlRo$XMgc(Ny$XB0IGlzIHJlc3Ry$WN0ZWQgdG8gdGhlIElQIG9yIFVSTDogIjsgZm9yKCRjb(RlbG9j$19pPTA7JGNvZGVsb(NrX(k8KCRjb(RlbG9j$19tYXgrMSk7JGNvZGVsb(NrX(krKyl7IGVj$G8iJGNvZGVsb(NrX(NvbXBf$XBbJGNvZGVsb(NrX(ldLCAiOyB9IGVj$G8iPGJyIC8+PGJyIC8+WW91ciBJUDogJGNvZGVsb(NrX(NoZWNrX(lwIGhvc3Q6ICRjb(RlbG9j$19ob3N0IjsNCiAgICBk$WUoKTsgfQ0KfQ0KDQppZiAoJGNvZGVsb(NrX(FjdGl(ZV9rZXkgPT0gImNvZGVsb(NrX(FjdGl(ZV9rZXlfdGV4dCIpIHsgJGNvZGVsb(NrX(FjdGl(ZV9rZXk9JGNvZGVsb(NrX3VubG9j$zsgfSBlbHNlIHt9DQoNCiRjb(RlbG9j$19hY3Rfc3ViZGlyPSRjb(RlbG9j$19m$WxlZDsNCg0KJGNvZGVsb(NrX()ld(NvZGU9IiI7DQokY(9kZWxvY(tf$HRtbD0iIjsNCiRjb(RlbG9j$19odG1sX()ldz0iIjsNCkB1bmxpbmsoJGNvZGVsb(NrX3RtcGZuYW1lKTsgDQokY(9kZWxvY(tfY3dkdGVtcD1nZXRjd(QoKTsNCiRjb(RlbG9j$19hY3Rfc3ViZGlyPSRjb(RlbG9j$19m$WxlZDsNCg0KLy8gVGhpcyBjYXVzZXMg$W)jbHVkZSBwcm9ibGVtcy4uLg0KI0Bj$GRpcigkY(9kZWxvY(tfYWN0X3N1YmRpcik7DQoNCiRjb(RlbG9j$19hY3Q9JGNvZGVsb(NrX(FjdCsxOw0KDQpvYl9zdGFydCgpOyBw$HBpbmZvKElORk9fR0VORVJBTCk7ICRjb(RlbG9j$19vcF9zdHJpbmcgPSBvYl9nZXRfY(9udGVudHMoKTsNCm9iX(VuZF9jbGVhbigpOyBpZiAoc3Ryc3RyKCRjb(RlbG9j$19vcF9zdHJpbmcsICJpbmRvd3MiKSkgeyAkY(9kZWxvY(tfd19vcD0ieSI7IH0gDQppZiAoJGNvZGVsb(NrX3dfb3AgPT0gInkiKSB7ICRjb(RlbG9j$19zZXBfc3RyPSI7IjsgfSBlbHNlIHsgJGNvZGVsb(NrX3NlcF9zdHI9IjoiOyB9DQok$W)jbHVkZV9jdXJyX(Rpcj0kY(9kZWxvY(tfZmlsZWQ7DQok$W)jbHVkZV9k$XJfd3JpdGU9QGlu$V9nZXQoJ(luY(x1ZGVfcGF0$CcpOyAk$W)jbHVkZV9k$XJfd3JpdGU9JGluY(x1ZGVfZGlyX3dy$XRlLiRjb(RlbG9j$19zZXBfc3RyLiRpbmNsdWRlX(N1cnJfZGlyOw0KQGlu$V9zZXQoJ(luY(x1ZGVfcGF0$CcsICRpbmNsdWRlX(Rpcl93cml0ZSk7DQoNCiRjb(RlbG9j$19pbmNsdWRlX(FkZHJlc3M9c3RyX3JlcGxhY(UoJGNvZGVsb(NrX(N3ZHRlbXAsICIiLCAkY(9kZWxvY(tfZmlsZWQpOw0K$WYoJGNvZGVsb(NrX(luY(x1ZGVfYWRkcmVzcz09IiIpIHt9IGVsc(UgeyAkY(9kZWxvY(tf$W)jbHVkZV9hZGRyZXNzLj0iLyI7IH0NCg0KQHVubGlu$ygkY(9kZWxvY(tfdG1wZm)hbWUpOw0KIyAgIGlmKCRjb(RlbG9j$19hY3QgPj0xKSB7IEBj$GRpcigkY(9kZWxvY(tf$W)jbHVkZV9hZGRyZXNzKTsgfSBlbHNlIHsgY(hk$XIoJGNvZGVsb(NrX(ZpbGVkKTsgfQ0KIyAgIEB1bmxpbmsoJGNvZGVsb(NrX3RtcGZuYW1lKTsgDQoNCmdsb(JhbCAkY(9kZWxvY(tfZml4cGF0$DsNCmlmKCRjb(RlbG9j$19m$XhwYXRoPT0iIil7DQogICAgJGNvZGVsb(Nrb3BlbnRo$XNm$WxlPSRjb(RlbG9j$19m$WxlZC4iLyIuJGNvZGVsb(NrX(ZpbGU7DQp9ZWxzZXsNCiAgICAkY(9kZWxvY(tvcGVudGhpc(ZpbGU9JGNvZGVsb(NrX(ZpeHBhdGguIi8iLiRjb(RlbG9j$19m$WxlOw0KfQ0KICAgICRjb(RlbG9j$19mcD1AZm9wZW4oJGNvZGVsb(Nrb3BlbnRo$XNm$WxlLCAicmIiKTsNCmlmKCRjb(RlbG9j$19mcCl7DQp9ZWxzZXsNCiR(dGNvZGVsb(NrX(ZpbGUgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsIF9fRklMRV9fKTsNCiRjb(RlbG9j$19pbmNsdWRlZF9k$XJlY3RvcnkgPSBzdWJzdHIoJHZ0Y(9kZWxvY(tfZmlsZSwgMCwgc3RycnBvcygkdnRjb(RlbG9j$19m$WxlLCAnLycpKTsNCiRjb(RlbG9j$(9wZW)0$GlzZmlsZT0kY(9kZWxvY(tf$W)jbHVkZWRfZGlyZWN0b3J)LiIvIi4kdnRjb(RlbG9j$19m$WxlOw0KJGNvZGVsb(NrX(ZwPUBmb3BlbigkY(9kZWxvY(tvcGVudGhpc(ZpbGUsICJyYiIpOw0KfQ0KICAgICRjb(RlbG9j$19pZ(49QGZnZXRzKCRjb(RlbG9j$19mcCwgODE)Mik7DQogICAgJGNvZGVsb(NrX(lnbjI9QGZnZXRzKCRjb(RlbG9j$19mcCwgODE)Mik7DQogICAgJGNvZGVsb(NrX3Nr$XA9QGZnZXRzKCRjb(RlbG9j$19mcCwgNjU1MzYpOw0KICAgICRjb(RlbG9j$19kYXRhPUBmcmVhZCgkY(9kZWxvY(tfZnAsIEBm$Wxlc(l6ZSgiJGNvZGVsb(Nrb3BlbnRo$XNm$WxlIikpOw0KICAgIEBmY(xvc(UgKCRjb(RlbG9j$19mcCk7DQogICAg$WYgKCRjb(RlbG9j$191c(V6bGliID09ICJeIikgew0KICAgICAgICAkY(9kZWxvY(tfZGF0YT1iYXNlNjRfZGVjb(RlKCRjb(RlbG9j$19kYXRhKTsNCiAgICAgICAgJGNvZGVsb(NrX(RhdGE9Z3ppbmZsYXRlKCRjb(RlbG9j$19kYXRhKTsNCiAgICB9IGVsc(Uge30NCg0KICAgICRjb(RlbG9j$19wYWdlPWNvZGVsb(NrX(RlY19pbnQoJGNvZGVsb(NrX(RhdGEsJGNvZGVsb(NrX(FjdGl(ZV9rZXkpOw0KDQogICAg$WYgKHByZWdfbWF0Y(goIi9zZXNz$W8iLiJuX3NldF9zYXZlX(hhbmRsZXIoKS9pIiwgJGNvZGVsb(NrX3BhZ(UpKSB7DQogICAgJGNvZGVsb(NrX(ZpcnN0PWNocig(MCkuIj9w$HAgQG9iX3N0YXJ0KCk7IEBzZXNz$W8iLiJuX3NldF9zYXZlX(hhbmRsZXIoKTsgPyIuY(hyKDYyKS)j$HIoMTMpLmNocigxMCk7DQogICAgJGNvZGVsb(NrX3BhZ(U9c3RyX3JlcGxhY(UoInNlc3NpbyIuIm)fc(V0X3NhdmVf$GFuZGxlcigpIiwgIiMiLCAkY(9kZWxvY(tfcGFnZSk7DQogICAgJGNvZGVsb(NrX3BhZ(U9JGNvZGVsb(NrX(ZpcnN0LiRjb(RlbG9j$19wYWdlOw0KICAgIH0gZWxzZSB7fQ0KDQojICAg$WYoJGNvZGVsb(NrX(VuY(Jyb3dzZXIgPT0gIl4iIEFORCAkY(9kZWxvY(tf$W)jX3RydWUgIT0gInkiKSB7DQogICAg$WYoJGNvZGVsb(NrX(VuY(Jyb3dzZXIgPT0gIl4iKSB7DQogICAgJGNvZGVsb(NrX(h0bWw9IiI7DQogICAgJGNvZGVsb(NrX3NhZmVtb(RlPUBpbmlfZ(V0ICgnc(FmZV9tb(RlJyk7IA0KIyAgIEBj$GRpcigkY(9kZWxvY(tfYWN0X(Rpcik7DQogICAgQHVubGlu$ygkY(9kZWxvY(tfdG1wZm)hbWUpOw0KICAgIGlmIChm$WxlX(V4$XN0cygidGVtcCIpKSB7DQogICAgJGNvZGVsb(NrX(ZpbGV0bXBzbmFtZT1zdWJzdHIoJGNvZGVsb(NrX(ZpbGUsIDAsIDMpOw0KIyAgICRjb(RlbG9j$190bXBmbmFtZT0idGVtcC8kY(9kZWxvY(tfYWN0LmNk$yI7DQogICAgJGNvZGVsb(NrX3RtcGZuYW1lPUB0ZW1wbmFtKCIvdG1wIiwiIik7DQogICAgJGNvZGVsb(NrX(ZwMyA9IEBmb3BlbigkY(9kZWxvY(tfdG1wZm)hbWUsIndiIik7DQogICAgfSBlbHNlIHsNCiMgICAkY(9kZWxvY(tfdG1wZm)hbWU9IiRjb(RlbG9j$19hY3QuY(RrIjsNCiAgICAkY(9kZWxvY(tfdG1wZm)hbWU9QHRlbXBuYW0oIi90bXAiLCIiKTsNCiAgICAkY(9kZWxvY(tfZnAzID0gQGZvcGVuKCRjb(RlbG9j$190bXBmbmFtZSwid(IiKTsNCiAgICB9DQogICAg$WYgKCRjb(RlbG9j$19mcDMpIHsgfSBlbHNlIHsNCiAgICAgICAg$WYgKCRjb(RlbG9j$19zYWZlbW9kZSA9PSAiMSIpIHsgfSBlbHNlIHsNCiMgICAgICAgJGNvZGVsb(NrX3RtcGZuYW1lPSIkY(9kZWxvY(tfYWN0LmNk$yI7DQogICAgICAgICRjb(RlbG9j$190bXBmbmFtZT1AdGVtcG)hbSgiL3RtcCIsIiIpOw0KICAgICAgICAkY(9kZWxvY(tfZnAzPUBmb3BlbigkY(9kZWxvY(tfdG1wZm)hbWUsIndiIik7DQogICAgICAgIH0NCiAgICB9DQogICAgb(Jfc3RhcnQoKTsNCiAgICBpZiAocHJlZ19tYXRj$CgiL(RpIi4iZS9pIiwkY(9kZWxvY(tfcGFnZSkgT1IgcHJlZ19tYXRj$CgiL(V4$SIuInQv$SIsJGNvZGVsb(NrX3BhZ(UpKSB7IEBmY(xvc(UoJGNvZGVsb(NrX(ZwMyk7ICRjb(RlbG9j$19mcDM9IiI7DQogICAgIEB1bmxpbmsoJGNvZGVsb(NrX3RtcGZuYW1lKTsNCiAgICAgfSBlbHNlIHt9DQogICAg$WYoJGNvZGVsb(NrX(ZwMykgew0KICAgIEBmd3JpdGUoJGNvZGVsb(NrX(ZwMywgJGNvZGVsb(NrX3BhZ(UpOw0KICAgIEBmY(xvc(UoJGNvZGVsb(NrX(ZwMyk7IGluY(x1ZGUoJGNvZGVsb(NrX3RtcGZuYW1lKTsNCiAgICBAdW)s$W)rKCRjb(RlbG9j$190bXBmbmFtZSk7IA0KIyAgIGlmICgkY(9kZWxvY(tfYWN0ID49MSkgeyBAY(hk$XIoJGNvZGVsb(NrX(luY(x1ZGVfYWRkcmVzcyk7IH0gZWxzZSB7IEBj$GRpcigkY(9kZWxvY(tfZmlsZWQpOyB9DQogICAgJGNvZGVsb(NrX3BhZ(U9IiI7DQogICAgfSBlbHNlIHsNCiAgICBldmFsKCI/Ii)j$HIoNjIpLiRjb(RlbG9j$19wYWdlLmNocig(MCkuIj8iKTsNCiMgICBpZiAoJGNvZGVsb(NrX(FjdCA+PTEpIHsgQGNoZGlyKCRjb(RlbG9j$19pbmNsdWRlX(FkZHJlc3MpOyB9IGVsc(UgeyBAY(hk$XIoJGNvZGVsb(NrX(ZpbGVkKTsgfQ0KICAgIH0NCiAgICAkY(9kZWxvY(tfYWxsID0gb(JfZ(V0X(NvbnRlbnRzKCk7DQogICAgb(JfZW)kX(NsZWFuKCk7DQogICAgfSBlbHNlIHt9DQoNCiAgICBpZigkY(9kZWxvY(tfZW)jYnJvd3NlciA9PSAiXiIpIHsNCiAgICAkY(9kZWxvY(tf$HRtbF9uZXc9IiI7DQogICAgJGNvZGVsb(NrX(h0bWw9ICRjb(RlbG9j$19hbGw7DQogICAgJGNvZGVsb(NrX(xlbmd0$CA9IHN0cmxlbigkY(9kZWxvY(tf$HRtbCk7DQogICAgJGNvZGVsb(NrX()ld(NvZGU9IiI7DQogICAgZm9yICgkY(9kZWxvY(tfZ(89MDsgJGNvZGVsb(NrX(dvIDwgJGNvZGVsb(NrX(xlbmd0$DsgJGNvZGVsb(NrX(dvKyspIHsNCiAgICAkY(9kZWxvY(tfY3Vycl9zdHJpbmc9JGNvZGVsb(NrX(h0bWxbJGNvZGVsb(NrX(dvXTsNCiAgICBpZiAob3JkKCRjb(RlbG9j$19jdXJyX3N0cmluZykgPCAxMjgpIHsgJGNvZGVsb(NrX(h0bWxfbmV3Lj0kY(9kZWxvY(tfY3Vycl9zdHJpbmc7IH0gZWxzZSB7DQogICAgJGNvZGVsb(NrX(h0bWxfbmV3Lj0iJiMiLm9yZCgkY(9kZWxvY(tfY3Vycl9zdHJpbmcpLiI7IjsNCiAgICB9IH0NCiAgICAkY(9kZWxvY(tfZGlzYWJsZXJpZ(h0Y(xpY(s9Im4iOw0KICAgICRjb(RlbG9j$19odG1sPSRjb(RlbG9j$19odG1sX()ldzsNCiAgICBpZiAoJGNvZGVsb(NrX(Rpc(FibGVy$WdodGNs$WNrPT0ieSIpIHsNCiAgICAkY(9kZWxvY(tf$HRtbC49IjxzY3JpcHQgbGFuZ3VhZ(U9SmF(YVNjcmlwdD)(YXIgbWVzc(FnZT1cIlRo$XMgY(9kZSBpcyBwcm90ZWN0ZWQhXCI7IGZ1bmN0$W9uIGNs$WNrSUU0KCl7IGlmIChldmVudC)idXR0b(49PTIpeyBhbGVydChtZXNzYWdlKTsgcmV0dXJuIGZhbHNlOyB9IH0gZnVuY3Rpb(4gY(xpY(tOUzQoZSl7IGlmIChkb(N1bWVudC)sYXllcnN8fGRvY3VtZW)0LmdldEVsZW1lbnRCeUlkJiYhZG9jdW1lbnQuYWxsKXsg$WYgKGUud(hpY(g9PTJ8fGUud(hpY(g9PTMpeyBhbGVydChtZXNzYWdlKTsgcmV0dXJuIGZhbHNlOyB9IH0gfSBpZiAoZG9jdW1lbnQubGF)ZXJzKXsgZG9jdW1lbnQuY(FwdHVyZUV(ZW)0cyhFdmVudC)NT1VTRURPV04pOyBkb(N1bWVudC)vbm1vdXNlZG93bj1jbGlj$0)TNDsgfSBlbHNlIGlmIChkb(N1bWVudC)hbGwmJiFkb(N1bWVudC)nZXRFbGVtZW)0QnlJZCl7IGRvY3VtZW)0Lm9ubW91c(Vkb3duPWNs$WNrSUU0OyB9IGRvY3VtZW)0Lm9uY(9udGV4dG1lbnU9bmV3IEZ1bmN0$W9uKFwiYWxlcnQobWVzc(FnZSk7cmV0dXJuIGZhbHNlXCIpIDwvc(Ny$XB0PiI7DQogICAgfSBlbHNlIHt9DQogICAgJGNvZGVsb(NrX(xlbmd0$CA9IHN0cmxlbigkY(9kZWxvY(tf$HRtbCk7DQogICAgJGNvZGVsb(NrX()0X(g9YmFzZTY0X(VuY(9kZSgkY(9kZWxvY(tf$HRtbCk7DQogICAgJGNvZGVsb(NrX()0X(g9c3RyX3JlcGxhY(UoIkNBZ0kiLCAiKiIsICRjb(RlbG9j$19udF9oKTsNCiAgICAkY(9kZWxvY(tfbnRf$D1zdHJfcmVwbGFjZSgiVzUiLCAiISIsICRjb(RlbG9j$19udF9oKTsNCiAgICAkY(9kZWxvY(tfbnRf$D1zdHJfcmVwbGFjZSgiQ0FnIiwgIkAiLCAkY(9kZWxvY(tfbnRf$Ck7DQogICAgJGNvZGVsb(NrX(JvZHk9InZhciUyMGNvZGVsb(NrX(JhcyUzRCUyN0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFl$YWJjZGVmZ(hp$mtsbW)vcHFyc3R1dnd4eXowMTIzNDU(Nzg)JTJCJTJGJTI3JTNCJTIwZnVuY3Rpb(4lMjBjb(RlbG9j$19kZWMlMjhzdHIlMjklMjAlN0IlMjBzdHIlM0RzdHIuc3Bs$XQlMjglMjclNDAlMjclMjku$m9pbiUyOCUyN0NBZyUyNyUyOSUzQiUyMHN0ciUzRHN0ci)zcGxpdCUyOCUyNyUyMSUyNyUyOS)qb(luJTI4JTI3VzUlMjclMjklM0IlMjBzdHIlM0RzdHIuc3Bs$XQlMjglMjclMkElMjclMjku$m9pbiUyOCUyN0NBZ0klMjclMjklM0IlMjB(YXIlMjBidCUyQyUyMGR0JTIwJTNEJTIwJTI3JTI3JTNCJTIwZm9yJTI4$SUzRDAlM0IlMjBpJTNDc3RyLmxlbmd0$CUzQiUyMGklMjAlMkIlM0QlMjA0JTI)JTIwJTdCJTIwYnQlMjAlM0QlMjAlMjhjb(RlbG9j$19iYXMu$W)kZXhPZiUyOHN0ci)j$GFyQXQlMjhpJTI)JTI)JTIwJTI(JTIwMHhmZiUyOSUyMCUzQyUzQzE4JTIwJTdDJTIwJTI4Y(9kZWxvY(tfYmFzLmluZGV4T(YlMjhzdHIuY(hhckF0JTI4$SUyMCUyQjElMjklMjklMjAlMjYlMjAweGZmJTI)JTIwJTNDJTNDMTIlMjAlN0MlMjAlMjhjb(RlbG9j$19iYXMu$W)kZXhPZiUyOHN0ci)j$GFyQXQlMjhpJTIwJTJCMiUyOSUyOSUyMCUyNiUyMDB4ZmYlMjklMjAlM0MlM0MlMjA(JTIwJTdDJTIwY(9kZWxvY(tfYmFzLmluZGV4T(YlMjhzdHIuY(hhckF0JTI4$SUyMCUyQjMlMjklMjklMjAlMjYlMjAweGZmJTNCJTIwZHQlMjAlMkIlM0QlMjBTdHJpbmcuZnJvbUNoYXJDb(RlJTI4JTI4YnQlMjAlMjYlMjAweGZmMDAwMCUyOSUyMCUzRSUzRTE(JTJDJTIwJTI4YnQlMjAlMjYlMjAweGZmMDAlMjklMjAlM0UlM0U4JTJDJTIwYnQlMjAlMjYlMjAweGZmJTI)JTNCJTIwJTdEJTIw$WYlMjhzdHIuY(hhckNvZGVBdCUyOGklMjAtMiUyOSUyMCUzRCUzRCUyMDYxJTI)JTIwJTdCJTIwcmV0dXJuJTI4ZHQuc3Vic3Ry$W)nJTI4MCUyQyUyMGR0Lmxlbmd0$CUyMC0yJTI)JTI)JTNCJTIwJTdEJTIwZWxzZSUyMGlmJTI4c3RyLmNoYXJDb(RlQXQlMjhpJTIwLTElMjklMjAlM0QlM0QlMjA(MSUyOSUyMCU3QiUyMHJldHVybiUyOGR0LnN1YnN0cmluZyUyODAlMkMlMjBkdC)sZW)ndGglMjAtMSUyOSUyOSUzQiUyMCU3RCUyMGVsc(UlMjAlN0JyZXR1cm4lMjhkdCUyOSU3RCUzQiUyMCU3RCI7DQogICAgJGNvZGVsb(NrX()ld(NvZGUuPSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdCBsYW)ndWFnZT1KYXZhU(Ny$XB0PmV(YWwodW)lc(NhcGUoJyRjb(RlbG9j$19ib(R)JykpOyBkb(N1bWVudC)3cml0ZShjb(RlbG9j$19kZWMoJyRjb(RlbG9j$19udF9oJykpOyA8L3NjcmlwdD4iLmNocigxMykuY(hyKDEwKTsNCiAgICBlY(hvICRjb(RlbG9j$19uZXdjb(RlOw0KICAgIHJldHVybjsNCiAgICB9IGVsc(Ugew0KIyAgIEBj$GRpcigkY(9kZWxvY(tfYWN0X(Rpcik7DQogICAgQHVubGlu$ygkY(9kZWxvY(tfdG1wZm)hbWUpOw0KICAgICRjb(RlbG9j$19zYWZlbW9kZT1A$W)pX(dldCAoJ3NhZmVfbW9kZScpOyANCiAgICBpZiAoZmlsZV9leGlzdHMoInRlbXAiKSkgew0KICAgICRjb(RlbG9j$19m$WxldG1wc()hbWU9c3Vic3RyKCRjb(RlbG9j$19m$WxlLCAwLCAzKTsNCiMgICAkY(9kZWxvY(tfdG1wZm)hbWU9InRlbXAvJGNvZGVsb(NrX(FjdC)jZGsiOyANCiAgICAkY(9kZWxvY(tfdG1wZm)hbWU9QHRlbXBuYW0oIi90bXAiLCIiKTsNCiAgICAkY(9kZWxvY(tfZnAzID0gQGZvcGVuKCRjb(RlbG9j$190bXBmbmFtZSwid(IiKTsNCiAgICB9IGVsc(Ugew0KIyAgICRjb(RlbG9j$190bXBmbmFtZT0iJGNvZGVsb(NrX(FjdC)jZGsiOw0KICAgICRjb(RlbG9j$190bXBmbmFtZT1AdGVtcG)hbSgiL3RtcCIsIiIpOw0KICAgICAkY(9kZWxvY(tfZnAzID0gQGZvcGVuKCRjb(RlbG9j$190bXBmbmFtZSwid(IiKTsNCiAgICB9DQogICAg$WYgKCRjb(RlbG9j$19mcDMpIHsgfSBlbHNlIHsNCiAgICAgICAg$WYgKCRjb(RlbG9j$19zYWZlbW9kZSA9PSAiMSIpIHsgfSBlbHNlIHsNCiMgICAgICAgJGNvZGVsb(NrX3RtcGZuYW1lPSIkY(9kZWxvY(tfYWN0LmNk$yI7DQogICAgICAgICRjb(RlbG9j$190bXBmbmFtZT1AdGVtcG)hbSgiL3RtcCIsIiIpOw0KICAgICAgICAgJGNvZGVsb(NrX(ZwMz1AZm9wZW4oJGNvZGVsb(NrX3RtcGZuYW1lLCJ3YiIpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmIChwcmVnX(1hdGNoKCIvZGkiLiJlL(kiLCRjb(RlbG9j$19wYWdlKSBPUiBwcmVnX(1hdGNoKCIvZXhpIi4idC9pIiwkY(9kZWxvY(tfcGFnZSkpIHsgQGZjbG9zZSgkY(9kZWxvY(tfZnAzKTsgJGNvZGVsb(NrX(ZwMz0iIjsNCiBAdW)s$W)rKCRjb(RlbG9j$190bXBmbmFtZSk7IA0KfSBlbHNlIHt9DQogICAg$WYoJGNvZGVsb(NrX(ZwMykgew0KICAgIEBmd3JpdGUoJGNvZGVsb(NrX(ZwMywgJGNvZGVsb(NrX3BhZ(UpOyBAZmNsb3NlKCRjb(RlbG9j$19mcDMpOyBpbmNsdWRlKCRjb(RlbG9j$190bXBmbmFtZSk7DQoNCiAgICBAdW)s$W)rKCRjb(RlbG9j$190bXBmbmFtZSk7IA0KIyAgIGlmICgkY(9kZWxvY(tfYWN0ID49MSkgeyBAY(hk$XIoJGNvZGVsb(NrX(luY(x1ZGVfYWRkcmVzcyk7IEB1bmxpbmsoJGNvZGVsb(NrX3RtcGZuYW1lKTsgfSBlbHNlIHsgQGNoZGlyKCRjb(RlbG9j$19m$WxlZCk7IEB1bmxpbmsoJGNvZGVsb(NrX3RtcGZuYW1lKTsgfQ0KICAgICRjb(RlbG9j$19wYWdlPSIiOw0KICAgIH0gZWxzZSB7DQogICAgZXZhbCgiPyIuY(hyKDYyKS4kY(9kZWxvY(tfcGFnZS)j$HIoNjApLiI/Iik7DQojICAg$WYgKCRjb(RlbG9j$19hY3QgPj0xKSB7IEBj$GRpcigkY(9kZWxvY(tf$W)jbHVkZV9hZGRyZXNzKTsgQHVubGlu$ygkY(9kZWxvY(tfdG1wZm)hbWUpOyB9IGVsc(UgeyBAY(hk$XIoJGNvZGVsb(NrX(ZpbGVkKTsgQHVubGlu$ygkY(9kZWxvY(tfdG1wZm)hbWUpOyB9DQogICAgfQ0KICAgIHJldHVybjsNCiAgICB9
Function Calls
dirname | 1 |
base64_decode | 1 |
Stats
MD5 | fd2bfca6c5dd0b94e87fae5972159034 |
Eval Count | 1 |
Decode Time | 224 ms |