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

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval(base64_decode('CiBnb3RvIGwzNTMzOyBXcjNRbzogZnVuY3Rpb24gR2V0QWxsU29uZ3MoJHNpZCkg..

Decoded Output download


 goto l3533; Wr3Qo: function GetAllSongs($sid) { $server = getServer($sid); $songs = array(); $songs = array_merge($songs, GetSongs($server["\150\x6f\x73\x74\151\x64"], GetSongDirectory($sid, "\165\x70\154\157\141\x64"), "\165\x70\x6c\x6f\141\x64")); $songs = array_merge($songs, GetSongs($server["\150\157\x73\164\x69\144"], GetSongDirectory($sid, "\x61\144"), "\x61\x64")); $songs = array_merge($songs, GetSongs($server["\150\157\x73\164\151\144"], GetSongDirectory($sid, "\x72\145\143\x6f\x72\x64"), "\162\145\x63\157\x72\x64")); return $songs; } goto sfUal; C6U6D: function stopAutoDJ($pId) { global $mysqli; $server = getServer($pId); $port = $server["\x70\x6f\162\x74\x62\x61\163\145"]; $hid = $server["\150\x6f\x73\x74\151\144"]; $configrootpath = "\x23\103\125\122\122\105\116\124\x5f\x44\111\122\x23\57\x73\145\x72\x76\145\x72\x2f" . $pId . "\x2f\143\157\156\x66\57"; $response = sendToServer($hid, "\163\164\x6f\160\141\x75\x74\x6f\144\152", $pId, $configrootpath); $stmt = $mysqli->prepare("\125\x50\104\x41\124\105\x20\x73\x65\162\x76\145\162\163\40\123\x45\124\x20\x61\x75\x74\157\144\152\x73\164\x61\164\x75\163\x20\75\x20\x30\x20\127\x48\105\x52\x45\40\x69\x64\x20\75\x20\x3f"); $stmt->bind_param("\x69", $pId); if (!$stmt->execute()) { return false; } $stmt->close(); return array("\x41\165\x74\x6f\104\x4a\x20\x67\145\163\x74\x6f\160\160\x74\x21"); } goto wJbFA; emw_E: function maxServerCountReached() { if (isFullVersion()) { return false; } if (getServerCount() < getMaxServerCount()) { return false; } return true; } goto jBWK8; TtODG: function getHostCount() { global $mysqli; if (isMultiVersion()) { return 0; } $result = $mysqli->query("\123\105\114\105\103\124\x20\x43\117\x55\116\x54\50\151\x64\51\40\x41\123\40\x61\156\x7a\x20\106\x52\x4f\x4d\x20\x68\157\x73\164\x73\73"); $data = $result->fetch_array(MYSQLI_ASSOC); return $data["\141\x6e\x7a"]; } goto Rw6vI; thB6h: function getUserCount() { global $mysqli; if (isFullVersion()) { return 0; } $result = $mysqli->query("\x53\x45\x4c\x45\x43\x54\x20\103\117\x55\116\124\x28\x69\x64\x29\40\101\123\40\141\x6e\172\40\106\122\117\x4d\x20\165\x73\x65\162\163\73"); return $result->fetch_array(MYSQLI_ASSOC)["\x61\156\x7a"]; } goto TtODG; bLJxo: function getPercentStorageUsed($pId, $maxsize) { $actual_dir_size = getStorageUsed($pId); if ($maxsize != 0) { $percent = 100 - round($actual_dir_size / $maxsize * 100); } else { $percent = 0; } return $percent; } goto pnGV_; sfUal: function GetPlaylists($sid) { $server = getServer($sid); $playlistdir = "\43\x43\x55\x52\122\105\116\x54\x5f\x44\111\x52\43\x2f\163\x65\x72\166\x65\162\x2f" . $server["\x69\144"] . "\x2f\160\x6c\141\171\x6c\x69\163\164\x2f"; $response = sendToServer($server["\x68\157\x73\x74\151\144"], "\x72\x65\141\x64\x64\151\x72", $playlistdir, ''); $recievedFiles = unserialize($response["\162\145\x73\x75\154\164"]); $files = array(); foreach ($recievedFiles as $file) { if ($file != "\x2e" && $file != "\56\56") { $files[] = $file; } } return $files; } goto m0r1H; pnGV_: function getMaxServerCount() { return 5; } goto PtV0u; xZIUp: function getServerHost($pId) { global $mysqli; $stmt = $mysqli->prepare("\123\105\x4c\105\103\124\x20\x2a\54\x73\x65\162\x76\x65\162\163\x2e\151\144\x20\101\x53\40\163\x69\x64\54\x68\x6f\x73\x74\163\x2e\x69\144\40\141\x73\40\150\151\x64\x20\106\122\x4f\115\x20\163\145\x72\166\145\162\163\x20\x4c\x45\106\124\40\x4a\x4f\111\x4e\x20\x68\x6f\163\x74\163\x20\x4f\x4e\x20\163\x65\x72\x76\145\162\x73\x2e\x68\157\163\x74\x69\144\40\x3d\40\150\x6f\163\x74\163\x2e\151\x64\40\x57\110\105\x52\x45\x20\x73\x65\x72\166\x65\162\163\56\x69\144\x20\75\40\x3f"); $stmt->bind_param("\x69", $pId); if (!$stmt->execute()) { return false; } $result = $stmt->get_result(); if ($result->num_rows !== 1) { addError("\123\145\x72\x76\x65\x72\x20\x6b\157\156\x6e\x74\x65\x20\x6e\151\143\150\164\x20\x67\145\146\x75\x6e\144\145\156\40\167\145\x72\144\x65\156\41"); return false; } $ret = $result->fetch_array(MYSQLI_ASSOC); $stmt->close(); return $ret; } goto YLL7O; MJf2d: function getStorageUsed($pId) { global $mysqli; $ret = 0; $server = getServer($pId); $hid = $server["\x68\157\163\164\x69\x64"]; $response = sendToServer($hid, "\x67\x65\x74\x73\x74\157\x72\x61\147\145", $pId, ''); if (!isset($response)) { return 0; } $ret = intval($response["\x72\x65\163\x75\154\164"]); return $ret; } goto bLJxo; XdmGC: function haveValidLicense() { return true; } goto XB3dF; znm14: function sendToServer($pHostId, $pCommand, $pValue0, $pValue1 = '') { global $mysqli; $ret = array(); $stmt = $mysqli->prepare("\x53\105\x4c\105\103\124\x20\x75\x72\x6c\x20\106\x52\x4f\x4d\40\150\157\x73\164\163\40\x57\110\105\122\105\40\151\144\x20\75\x20\77"); $stmt->bind_param("\x69", $pHostId); $stmt->execute(); $sqlhosturl = $stmt->get_result(); if (mysqli_num_rows($sqlhosturl) != 1) { $ret["\x65\x72\x72\157\x72"] = "\x48\157\163\164\40\x6b\x6f\156\156\x74\x65\x20\156\151\x63\150\x74\x20\147\145\146\x75\156\144\145\156\x20\167\x65\x72\144\145\x6e\41"; return $ret; } while ($data = mysqli_fetch_array($sqlhosturl)) { $currentHostURL = $data["\x75\162\x6c"]; } if ($pCommand == "\x73\x61\166\x65\x62\x69\147\x66\151\154\x65") { $pValue1 = gzcompress($pValue1, 4); } else { $pValue1 = encrypt(base64_encode($pValue1)); } $data = array("\x63\x6d\x64" => encrypt(base64_encode($pCommand)), "\166\141\x6c\x75\x65\x30" => encrypt(base64_encode($pValue0)), "\x76\141\154\165\145\61" => $pValue1); $options = array("\x68\x74\164\160" => array("\150\145\x61\x64\145\x72" => "\x43\157\x6e\164\x65\156\x74\55\x74\171\x70\x65\72\40\x61\160\160\154\151\143\141\x74\x69\x6f\156\57\170\55\x77\167\x77\55\146\x6f\x72\155\x2d\x75\162\154\145\156\x63\157\x64\145\x64\xa", "\155\145\x74\x68\x6f\144" => "\120\x4f\x53\124", "\x63\x6f\156\x74\145\x6e\x74" => http_build_query($data))); $context = stream_context_create($options); $ret["\162\x65\x73\165\x6c\164"] = file_get_contents($currentHostURL, false, $context); if ($ret["\162\145\163\x75\x6c\x74"] == "\x6e\165\154\154") { $ret["\162\x65\163\x75\x6c\164"] = null; } return $ret; } goto IHyL1; Rw6vI: function isFullVersion() { global $SpecialPhpVersion; if (!isset($SpecialPhpVersion)) { haveValidLicense(); } return $SpecialPhpVersion; } goto B_Lif; jBWK8: function getTooMuchServers() { return getServerCount() > getMaxServerCount(); } goto iSVM6; WpoXY: function GetSongs($hid, $filepath, $filetype) { $response = sendToServer($hid, "\162\x65\141\x64\144\151\x72", $filepath, ''); $ret = array(); if (!$response["\162\x65\x73\x75\154\x74"] || $response["\162\x65\x73\165\154\164"] == "\x4e\117\x54\x5f\x45\130\x49\123\124\x53") { return $ret; } $files = unserialize($response["\x72\x65\163\x75\x6c\x74"]); foreach ($files as $file) { if ($file != '' && $file != "\x2e" && $file != "\x2e\x2e") { $filename = substr($file, strrpos($file, "\x2f")); if (!endsWith($filename, "\x2e\155\160\63")) { continue; } $ret[] = array(htmlentities($filename), $filetype); } } return $ret; } goto Wr3Qo; B_Lif: function isMultiVersion() { global $SpecialPhpVersion2; if (!isset($SpecialPhpVersion2)) { haveValidLicense(); } return $SpecialPhpVersion2; } goto fZ6C0; RLLgw: function GetSongDirectory($pId, $type) { if ($type == "\141\x64") { return "\43\x43\x55\122\x52\105\116\x54\137\x44\111\x52\43\x2f\163\x65\x72\166\x65\162\x2f" . $pId . "\x2f\x75\160\x6c\157\141\144\163\57\x61\144\163\57"; } if ($type == "\x72\145\143\x6f\x72\x64") { return "\43\x43\x55\x52\122\105\116\x54\x5f\x44\111\x52\x23\x2f\163\x65\162\166\x65\x72\57" . $pId . "\57\162\145\143\157\162\144\145\144\57"; } return "\43\x43\125\122\x52\x45\x4e\124\137\104\x49\122\43\x2f\163\145\162\x76\x65\162\57" . $pId . "\x2f\x75\160\x6c\157\x61\x64\163\57"; } goto WpoXY; VY8SV: function GetRole($user) { $role = $user["\165\x73\145\162\137\154\x65\x76\x65\154"]; if ($role == "\104\152") { return 1; } if ($role == "\125\163\145\162") { return 2; } if ($role == "\101\x64\155\x69\x6e") { return 3; } if ($role == "\123\165\x70\145\x72\x20\x41\x64\x6d\x69\x6e\151\163\164\x72\141\x74\x6f\162") { return 4; } return 0; } goto bslTX; fZ6C0: function urlstrip($str) { $str = str_replace("\46", '', $str); $str = str_replace("\73", '', $str); $str = str_replace("\x3d", '', $str); $str = str_replace("\x3f", '', $str); return $str; } goto XdmGC; l3533: function WriteCurrentServerBadge() { $server = getServerHost($_GET["\x73\151\x64"]); echo "\74\x73\160\141\x6e\x20\143\154\141\x73\163\75\x22\142\x61\144\x67\145\40\142\141\x64\147\x65\x2d\x70\x72\151\155\141\162\171\x22\x20\144\x61\x74\141\55\x74\x6f\x67\147\154\x65\75\42\164\x6f\157\x6c\x74\x69\x70\42\x20\144\141\164\141\55\x70\x6c\x61\143\x65\x6d\145\x6e\164\x3d\42\142\157\x74\x74\157\155\x22\40\164\x69\x74\x6c\145\x3d\x22\x41\x75\x73\x67\145\x77\xc3\203\xc2\xa4\150\x6c\x74\x65\162\40\123\x68\157\x75\x74\143\141\163\164\x20\x53\x65\162\166\145\162\x22\x3e" . $server["\x69\160"] . "\72" . $server["\x70\157\x72\x74\x62\x61\x73\x65"] . "\74\57\163\x70\141\156\x3e"; } goto oAEcf; wJbFA: function writeCalendarFile($pId) { global $mysqli; $pId = intval($pId); $server = getServer($pId); $port = $server["\x70\x6f\x72\x74\142\141\163\x65"]; $hid = $server["\150\157\163\x74\x69\x64"]; $xml = "\x3c\77\x78\x6d\154\x20\x76\x65\162\x73\151\157\156\75\x22\x31\x2e\60\x22\40\145\156\143\x6f\144\151\156\x67\x3d\42\125\x54\106\x2d\70\42\40\x3f\x3e\xa"; $xml .= "\74\x65\166\x65\x6e\x74\x6c\x69\163\164\76\xa"; $stmt = $mysqli->prepare("\x53\105\114\x45\x43\124\x20\x2a\40\x46\122\x4f\x4d\40\144\152\163\x20\127\110\x45\x52\105\x20\163\145\162\x76\x65\162\x69\x64\40\75\40\x3f\40\x41\x4e\x44\40\x63\x61\156\163\x74\x72\x65\x61\155\75\x27\61\x27\x20\x4f\x52\104\105\x52\40\x42\x59\40\151\x64\x20\x44\105\123\x43"); $stmt->bind_param("\151", $pId); if (!$stmt->execute()) { return false; } $result = $stmt->get_result(); if ($result->num_rows > 0) { while ($data = $result->fetch_array(MYSQLI_ASSOC)) { $xml .= "\x3c\x65\166\x65\x6e\164\x20\164\171\160\145\x3d\x22\x64\152\x22\76\12"; $xml .= "\x3c\144\152\x20\141\162\143\x68\151\166\145\75\x22" . $data["\x61\x72\x63\x68\x69\x76\x65"] . "\x22\40\x70\x72\151\157\x72\151\x74\x79\75\x22" . $data["\x70\x72\x69\x6f\162\151\164\x79"] . "\x22\x3e" . $data["\x6c\157\147\x69\156"] . "\x3c\x2f\x64\152\76\xa"; $xml .= "\x3c\143\x61\154\145\156\x64\x61\x72\x20\57\76\xa"; $xml .= "\x3c\x2f\145\166\x65\x6e\164\76\12"; } } $stmt = $mysqli->prepare("\x53\105\114\105\103\x54\x20\x2a\x20\106\x52\x4f\115\x20\x65\x76\x65\x6e\164\x73\x20\127\110\x45\122\105\40\163\x65\x72\166\145\162\x69\144\40\75\40\x3f\x20\x4f\122\104\105\122\40\x42\x59\40\151\x64\40\104\105\123\103"); $stmt->bind_param("\151", $pId); if (!$stmt->execute()) { return false; } $result = $stmt->get_result(); if ($result->num_rows > 0) { while ($data = $result->fetch_array(MYSQLI_ASSOC)) { $xml .= "\74\x65\x76\145\156\164\x20\x74\x79\x70\x65\75\x22" . $data["\x74\x79\160\x65"] . "\42\x3e" . "\12"; $xml .= "\74\143\141\x6c\x65\156\x64\x61\x72\40\163\164\x61\162\164\x64\x61\x74\x65\75\x22" . $data["\163\164\x61\x72\x74\x64\x61\164\x65"] . "\42\40\x65\x6e\x64\x64\141\x74\x65\x3d\x22" . $data["\145\156\x64\x64\141\x74\x65"] . "\42\40\163\164\141\162\164\164\151\x6d\145\x3d\42" . $data["\163\x74\141\162\x74\x74\151\155\x65"] . "\42\40\x64\165\162\141\164\x69\157\156\x3d\x22" . $data["\x64\165\x72\141\164\x69\x6f\x6e"] . "\42\x20\162\x65\160\145\x61\164\x3d\x22" . $data["\x72\x65\160\145\x61\x74"] . "\x22\x20\x74\151\155\x65\x6f\x66\146\x73\x65\164\75\x22" . $data["\x74\151\x6d\145\x6f\146\146\163\145\x74"] . "\x22\40\57\76" . "\xa"; $xml .= "\x3c\x70\154\x61\x79\154\x69\163\164\40\154\157\x6f\x70\x61\164\x65\x6e\x64\75\42" . $data["\x6c\x6f\x6f\x70\x61\164\145\156\144"] . "\x22\40\163\150\x75\x66\146\154\x65\x3d\42" . $data["\163\x68\x75\x66\146\154\145"] . "\42\40\x70\162\151\x6f\x72\151\x74\171\x3d\x22" . $data["\x70\162\151\157\162\151\164\171"] . "\42\x3e" . "\12"; $xml .= $data["\x70\x6c\x61\x79\x6c\151\163\164"]; $xml .= "\x3c\x2f\x70\x6c\141\171\154\151\163\x74\76" . "\12"; $xml .= "\x3c\x2f\145\x76\x65\x6e\164\x3e\xa"; } } $xml .= "\x3c\57\x65\x76\x65\156\x74\x6c\x69\163\x74\x3e"; $filename = "\43\103\125\x52\x52\105\116\x54\137\104\x49\x52\x23\57\163\x65\x72\166\x65\162\x2f" . $pId . "\57\x63\x61\x6c\145\x6e\x64\141\162\56\x78\155\154"; $response = sendToServer($hid, "\x77\x72\x69\x74\x65\x66\151\154\x65", $filename, $xml); return true; } goto MJf2d; gNMVX: function stopServer($pId) { global $mysqli; stopAutoDJ($pId); $server = getServer($pId); $port = $server["\160\x6f\x72\x74\142\x61\163\145"]; $hid = $server["\x68\x6f\x73\164\151\x64"]; $configrootpath = "\43\x43\x55\122\x52\105\116\x54\x5f\104\111\x52\43\x2f\x73\145\162\166\145\x72\x2f" . $pId . "\57\143\x6f\x6e\146\x2f"; $response = sendToServer($hid, "\x73\x74\157\x70\163\x65\x72\166\145\x72", $pId, $configrootpath); $stmt = $mysqli->prepare("\125\x50\104\101\x54\x45\x20\x73\145\162\x76\145\162\163\x20\123\x45\x54\40\163\145\x72\166\145\x72\x73\x74\x61\164\165\x73\40\x3d\x20\60\x20\127\x48\105\x52\105\40\151\144\40\75\x20\x3f"); $stmt->bind_param("\151", $pId); if (!$stmt->execute()) { return false; } $stmt->close(); return array("\x53\145\162\x76\145\162\40\x67\145\x73\164\157\x70\x70\164\x21"); } goto Ncjq4; JRgdz: function getServerCount() { global $mysqli; if (isFullVersion()) { return 0; } $result = $mysqli->query("\123\x45\x4c\x45\x43\x54\x20\103\x4f\x55\x4e\124\x28\x69\x64\51\40\x41\x53\40\x61\x6e\x7a\x20\x46\x52\117\115\x20\163\145\162\166\145\162\x73\73"); return $result->fetch_array(MYSQLI_ASSOC)["\141\x6e\x7a"]; } goto thB6h; oAEcf: function getServer($pId) { global $mysqli; $stmt = $mysqli->prepare("\123\105\x4c\105\103\124\40\x2a\40\x46\122\x4f\x4d\40\163\x65\x72\166\x65\x72\163\x20\127\110\x45\x52\x45\40\x73\145\162\x76\145\162\163\56\151\144\40\x3d\x20\77"); $stmt->bind_param("\x69", $pId); if (!$stmt->execute()) { return false; } $result = $stmt->get_result(); if ($result->num_rows !== 1) { addError("\x53\145\162\x76\x65\162\40\x6b\x6f\156\156\x74\145\x20\156\151\x63\150\164\x20\147\x65\x66\x75\x6e\x64\x65\156\40\x77\145\162\144\x65\x6e\41"); return false; } $ret = $result->fetch_array(MYSQLI_ASSOC); $stmt->close(); return $ret; } goto xZIUp; XB3dF: function deleteServer($pId) { global $mysqli; $server = getServerHost($pId); sendToServer($server["\x68\151\x64"], "\162\155\x64\151\162", "\43\x43\125\x52\x52\105\x4e\x54\137\x44\111\x52\43\x2f\163\145\162\166\x65\x72\57" . $pId . "\x2f", ''); $mysqli->query("\x44\105\x4c\105\x54\x45\40\106\x52\x4f\115\x20\144\152\x73\40\x57\x48\105\x52\x45\x20\x73\145\x72\x76\145\162\151\x64\75\x27" . $server["\163\x69\144"] . "\x27"); $mysqli->query("\x44\x45\x4c\105\124\105\40\106\122\x4f\115\40\145\156\144\160\x6f\x69\156\x74\x73\x20\127\x48\x45\122\105\x20\x73\145\162\166\x65\162\x69\144\x3d\47" . $server["\x73\151\x64"] . "\47"); $mysqli->query("\x44\105\x4c\105\124\105\40\x46\x52\x4f\115\40\x65\166\145\x6e\x74\163\40\x57\x48\105\x52\x45\x20\163\x65\x72\x76\x65\162\x69\x64\x3d\x27" . $server["\x73\x69\x64"] . "\47"); $mysqli->query("\x44\x45\x4c\105\x54\105\40\106\122\x4f\x4d\x20\163\145\x72\166\x65\162\x67\x72\x6f\x75\x70\x73\40\x57\110\105\122\105\40\163\145\x72\x76\145\x72\x69\x64\x3d\x27" . $server["\x73\151\144"] . "\x27"); $mysqli->query("\x44\x45\114\x45\124\105\x20\106\x52\117\115\x20\163\145\x72\x76\145\162\x73\x20\x57\110\105\x52\105\40\x69\x64\x3d\x27" . $server["\x73\151\x64"] . "\x27"); return true; } goto znm14; iSVM6: function getTooMuchUsers() { return getUserCount() > getMaxUserCount(); } goto hbsGO; PtV0u: function getMaxUserCount() { return 1; } goto emw_E; YLL7O: function startServer($pId) { global $settings, $mysqli; if (getTooMuchServers()) { die("\x5a\x75\40\x76\x69\x65\x6c\145\40\x53\x65\x72\166\x65\162\x21"); } if (getTooMuchUsers()) { die("\132\x75\x20\x76\x69\x65\154\145\x20\x55\x73\x65\162\41"); } if (getTooMuchHosts()) { die("\132\x75\x20\166\151\x65\x6c\145\x20\x48\x6f\x73\164\163\x21"); } if (!is_numeric($pId)) { die("\x69\144\40\x69\x73\x74\40\x6b\145\x69\156\x65\x20\x5a\141\x68\x6c"); } $server = getServerHost($pId); $port = $server["\x70\157\162\x74\x62\141\x73\145"]; $hid = $server["\x68\x69\x64"]; $ip = $server["\x69\x6e\164\x65\162\156\141\x6c\x69\x70"]; $connection = @fsockopen($ip, $port, $errno, $errstr, 1); if ($connection) { stopServer($pId); } $connection = @fsockopen($ip, $port, $errno, $errstr, 1); if ($connection) { addError("\x53\145\162\x76\145\x72\40\153\x6f\x6e\156\x74\x65\40\x6e\x69\143\150\164\40\142\145\x65\156\144\145\x74\x20\x77\x65\162\x64\145\x6e\41"); return false; } writeCalendarFile($pId); $filename = "\x23\x43\x55\122\x52\x45\x4e\124\x5f\104\111\122\x23\57\163\145\162\166\145\x72\57" . $pId . "\x2f\143\157\x6e\x66\57\163\143\137\x73\145\x72\x76\x2e\143\x6f\x6e\x66"; $response = sendToServer($hid, "\162\x65\x61\x64\x66\x69\x6c\x65", $filename, ''); if ($response["\x72\145\163\165\x6c\164"] != null && $response["\x72\x65\163\x75\x6c\164"] != '') { $content = $response["\162\145\x73\x75\x6c\164"] . "\xa"; $scnumber = 1; while (get_string_between($content, "\x73\x74\162\x65\x61\155\x69\x64\137" . $scnumber . "\75", "\12") != '') { $streamid = get_string_between($content, "\163\164\162\145\141\155\151\x64\137" . $scnumber . "\x3d", "\12"); $authhash = get_string_between($content, "\x73\164\x72\x65\x61\x6d\141\x75\164\150\150\141\163\x68\137" . $scnumber . "\x3d", "\xa"); $stmt = $mysqli->prepare("\125\120\104\x41\x54\x45\x20\145\156\144\x70\157\x69\156\164\x73\40\123\x45\124\x20\163\164\x72\145\x61\155\x61\165\164\x68\150\x61\163\150\x20\75\x20\x3f\40\127\x48\105\122\x45\x20\163\x74\162\145\x61\x6d\x69\x64\x20\75\x20\x3f\x20\101\x4e\104\40\163\145\162\166\x65\162\151\x64\x20\x3d\40\x3f\73"); $stmt->bind_param("\x73\151\151", $authhash, $streamid, $pId); if (!$stmt->execute()) { addError("\x73\164\x72\x65\x61\x6d\x61\165\x74\x68\150\x61\x73\150\x20\146\x61\x69\154\145\144\41"); return false; } if ($authhash != '') { addInfo("\101\165\x74\150\150\x61\163\150\40" . $authhash . "\x20\146\xc3\x83\xc2\xbc\162\40\x53\164\162\145\x61\x6d\111\x64\40" . $streamid . "\x20\x67\145\x66\165\156\x64\145\156\x20\x21"); } $scnumber++; } } $ini_content = ''; $configfields = array("\x6d\x61\170\x75\163\145\162" => "\155\141\170\165\x73\145\x72", "\x70\x6f\x72\164\x62\x61\x73\145" => "\x70\157\x72\164\x62\x61\163\x65", "\160\141\163\163\167\157\162\x64" => "\x70\x61\163\x73\x77\157\162\144", "\160\x61\x73\163\x77\x6f\x72\x64" => "\x70\141\x73\163\167\x6f\162\x64", "\141\144\x6d\x69\156\x70\x61\x73\163\x77\157\162\x64" => "\141\144\x6d\151\x6e\160\141\163\163\x77\x6f\162\x64", "\154\x6f\x67\146\151\154\x65" => "\x6c\157\x67\x66\x69\154\x65", "\x73\150\157\167\154\x61\163\x74\163\157\x6e\x67\163" => "\x73\x68\x6f\x77\x6c\x61\x73\164\163\x6f\x6e\147\x73", "\x77\x33\x63\x65\156\141\142\x6c\145" => "\x77\x33\x63\145\x6e\141\x62\x6c\145", "\x77\63\x63\154\x6f\x67" => "\167\63\143\x6c\x6f\x67", "\x62\x61\156\146\x69\154\x65" => "\142\x61\156\x66\151\154\x65", "\162\151\x70\146\x69\154\145" => "\162\x69\x70\146\x69\x6c\x65", "\165\166\157\170\x32\163\x6f\x75\162\x63\x65\x64\145\x62\165\x67" => "\165\166\157\x78\x32\163\x6f\165\162\x63\145\144\x65\142\165\x67", "\163\162\x63\151\160" => "\163\x72\x63\151\160", "\144\x65\x73\x74\151\x70" => "\144\x65\x73\x74\151\x70", "\x79\160\x6f\162\164" => "\171\160\157\162\x74", "\x6e\x61\x6d\145\x6c\157\x6f\x6b\165\x70\163" => "\156\141\x6d\x65\154\157\157\153\165\x70\x73", "\x61\165\164\x6f\144\x75\x6d\160\165\x73\x65\x72\x73" => "\x61\165\x74\x6f\144\x75\155\x70\165\x73\x65\162\163", "\141\165\x74\157\144\165\155\x70\x73\157\x75\162\143\145\x74\x69\155\145" => "\x61\165\x74\x6f\x64\x75\x6d\160\x74\x69\155\x65", "\160\165\142\x6c\151\x63\x73\145\x72\x76\x65\162" => "\x70\165\142\x6c\151\143\163\145\162\x76\x65\162", "\x61\154\x6c\x6f\167\162\145\154\141\171" => "\x61\x6c\154\x6f\167\x72\145\154\141\x79", "\141\x6c\154\x6f\167\x70\x75\x62\154\151\143\162\x65\x6c\x61\171" => "\141\x6c\x6c\x6f\x77\160\165\x62\x6c\151\x63\162\145\x6c\x61\171", "\155\x65\x74\141\151\156\x74\145\x72\x76\141\x6c" => "\155\x65\164\141\x69\156\164\x65\162\166\x61\154", "\142\165\146\x66\145\162\x74\171\x70\x65" => "\x62\165\146\x66\145\x72\164\x79\160\145", "\x62\165\x66\146\145\x72\150\x61\162\x64\154\x69\155\x69\x74" => "\142\165\x66\146\x65\162\x68\x61\162\x64\154\151\155\x69\x74", "\141\x64\141\x70\x74\x69\x76\145\x62\165\146\146\145\162\163\151\172\145" => "\x61\x64\x61\160\x74\151\x76\145\142\165\x66\146\x65\x72\x73\151\x7a\145", "\146\x69\170\145\x64\142\165\x66\x66\x65\x72\x73\x69\x7a\x65" => "\x66\x69\170\145\144\x62\x75\x66\146\x65\162\x73\x69\172\x65"); foreach ($server as $field => $value) { if (array_key_exists($field, $configfields)) { $configfield = $configfields[$field]; $ini_content .= $configfield . "\75" . $value . "\xa"; } } $shversion = $server["\x73\x68\x6f\165\164\143\x61\163\164\x5f\166\x65\x72\x73\151\157\156"]; $relayurl = $server["\x72\145\154\x61\171\163\145\162\166\145\162"]; if (!empty($server["\151\156\164\x72\157\146\151\x6c\x65"])) { $ini_content .= "\151\x6e\164\x72\x6f\146\151\154\145\x3d" . $server["\x69\156\164\162\157\146\151\154\145"] . "\xa"; } $ini_content .= "\163\x63\162\x65\145\156\154\157\147\75\61\12"; $ini_content .= "\154\157\x67\x3d" . $settings["\154\157\147\x73"] . "\xa"; if ($shversion == 2) { $ini_content .= "\163\164\162\x65\141\155\162\145\x6c\x61\x79\165\162\x6c\x5f\x31\x3d" . $relayurl . "\12"; $ini_content .= "\171\x70\62\75\61\12"; $ini_content .= "\171\x70\141\144\x64\x72\x3d\171\x70\56\x73\150\x6f\165\164\x63\141\163\164\x2e\x63\x6f\x6d\12"; $ini_content .= "\171\x70\160\157\x72\164\75\x38\x30\12"; $ini_content .= "\x79\160\160\141\x74\x68\x3d\x2f\x79\x70\62\12"; } $sqlcmd = "\123\105\x4c\x45\103\124\x20\163\164\162\145\x61\155\x69\144\54\163\164\162\145\x61\x6d\141\x75\164\x68\150\x61\x73\x68\40\106\x52\x4f\115\40\x65\156\x64\x70\x6f\151\156\x74\163\x20\127\x48\105\122\x45\40\x73\145\x72\166\145\x72\151\144\40\x3d\40\77\x20\x4f\x52\104\x45\122\40\102\131\40\x73\x74\162\145\141\155\x69\144"; if ($shversion == 1) { $sqlcmd .= "\40\x4c\111\x4d\111\x54\x20\61\73"; } $stmt = $mysqli->prepare($sqlcmd); $stmt->bind_param("\151", $pId); if (!$stmt->execute()) { return false; } $result = $stmt->get_result(); $i = 1; while ($editsqlrow = $result->fetch_array(MYSQLI_ASSOC)) { $ini_content .= "\163\x74\x72\145\141\155\x61\x75\164\x68\150\141\163\150\137" . $i . "\75" . $editsqlrow["\163\164\162\x65\141\x6d\141\x75\x74\x68\x68\141\163\150"] . "\12"; $ini_content .= "\163\164\162\x65\x61\x6d\151\144\137" . $i . "\75" . $editsqlrow["\x73\164\x72\145\141\155\x69\x64"] . "\xa"; $i++; } $stmt->close(); $response = sendToServer($hid, "\167\162\151\x74\x65\x66\x69\154\145", $filename, $ini_content); $param = array(); $param["\151\144"] = $pId; $param["\x76\145\162\x73\x69\x6f\x6e"] = $shversion; $param["\143\157\156\x66\x69\147\146\x69\x6c\145"] = $filename; $response = sendToServer($hid, "\x73\164\141\x72\x74\163\x65\162\166\x65\162", serialize($param), ''); $stmt = $mysqli->prepare("\x55\120\104\101\124\105\40\x73\145\162\x76\145\162\x73\x20\x53\105\x54\x20\x73\x65\x72\x76\145\162\x73\164\x61\x74\165\163\40\x3d\x20\61\40\x57\110\x45\x52\105\40\151\x64\40\x3d\x20\77"); $stmt->bind_param("\151", $pId); if (!$stmt->execute()) { return false; } $stmt->close(); if ($server["\x73\163\x6c\164\x75\156\156\145\154"]) { $response = sendToServer($hid, "\x66\x69\x6c\145\170\151\163\x74\x73", $server["\x73\163\154\160\165\x62\x6c\x69\x63\x6b\x65\171\x66\151\x6c\x65"]); if (!boolval($response["\x72\145\163\x75\154\164"])) { addError("\120\165\142\x6c\x69\x63\x20\113\x65\171\146\x69\x6c\x65\x20\145\170\151\x73\164\x69\x65\x72\x74\x20\x6e\151\143\150\164\40\157\x64\145\162\x20\x7a\165\40\x67\145\162\x69\x6e\147\145\x20\102\x65\162\x65\x63\150\164\151\147\165\156\147\145\x6e\x20\165\155\x20\x7a\165\172\165\147\x72\145\151\x66\x65\x6e"); } $response = sendToServer($hid, "\146\x69\154\x65\170\151\163\x74\x73", $server["\x73\x73\x6c\x70\x72\x69\x76\x61\x74\x65\x6b\x65\171\146\151\x6c\145"]); if (!boolval($response["\162\145\x73\165\154\x74"])) { addError("\x50\162\x69\166\x61\x74\145\x20\x4b\145\x79\146\151\x6c\x65\x20\x65\170\151\x73\x74\x69\x65\162\164\x20\156\151\x63\150\164\40\x6f\x64\x65\x72\40\x7a\165\x20\x67\x65\x72\151\x6e\147\145\40\x42\145\x72\x65\x63\x68\x74\x69\147\x75\156\147\145\x6e\40\165\155\x20\x7a\165\x7a\165\147\162\145\x69\x66\145\156"); } $stunnelfilename = "\43\x43\125\x52\122\x45\x4e\124\x5f\x44\111\x52\x23\57\163\145\162\x76\x65\162\x2f" . $pId . "\57\143\157\156\146\57\x73\164\x75\x6e\x6e\x65\x6c\x2e\143\x6f\156\x66"; $content = "\x66\x6f\162\145\147\162\157\165\x6e\144\x20\x3d\40\171\145\163\xa\160\x69\x64\40\x3d\40\12\133\163\x68\x6f\165\x74\143\141\x73\x74\x5d\xa\141\x63\143\x65\x70\x74\x3d" . (intval($server["\x70\x6f\162\x74\142\141\x73\145"]) + 2) . "\12\x63\157\156\x6e\145\x63\164\75" . $server["\x70\x6f\x72\x74\142\x61\x73\x65"] . "\12\x63\x65\x72\x74\x20\x3d\x20" . $server["\163\163\154\160\165\142\x6c\151\x63\x6b\145\171\146\x69\x6c\x65"] . "\12\x6b\x65\x79\40\x3d\40" . $server["\163\x73\x6c\160\162\x69\x76\x61\164\145\x6b\x65\x79\x66\151\x6c\x65"]; $response = sendToServer($hid, "\x77\x72\151\x74\145\146\151\x6c\145", $stunnelfilename, $content); $response = sendToServer($hid, "\163\164\141\162\x74\x73\164\165\156\x6e\145\154", $pId); } addInfo("\x53\x65\162\166\145\x72\x20\x77\165\x72\144\x65\40\x67\145\x73\x74\x61\x72\x74\145\x74"); return true; } goto gNMVX; hbsGO: function getTooMuchHosts() { return getHostCount() > 1; } goto JRgdz; IHyL1: function GetRoleStr($number) { if ($number == 1) { return "\x44\152"; } if ($number == 2) { return "\125\163\145\162"; } if ($number == 3) { return "\101\144\155\x69\156"; } if ($number == 4) { return "\x53\x75\160\x65\162\40\101\x64\155\151\x6e\151\x73\164\162\141\x74\x6f\x72"; } return "\142\141\x6e\x6e\x65\x64"; } goto VY8SV; bslTX: function HasRole($user, $number) { return GetRole($user) == $number; } goto RLLgw; Ncjq4: function startAutoDJ($pId, $pPlaylist) { global $mysqli, $settings; if (getTooMuchServers()) { die("\132\165\x20\166\151\145\154\x65\40\123\x65\162\x76\x65\x72\x21"); } if (getTooMuchUsers()) { die("\x5a\165\40\166\151\x65\154\145\40\125\163\x65\x72\41"); } if (getTooMuchHosts()) { die("\x5a\x75\40\x76\x69\x65\154\x65\40\110\157\x73\164\x73\x21"); } if (empty($pPlaylist)) { addError("\120\x6c\x61\171\154\151\x73\164\x20\151\163\164\x20\154\145\145\x72\x21"); return false; } $server = getServerHost($pId); $port = $server["\x70\x6f\x72\x74\142\141\x73\x65"]; $hid = $server["\x68\x6f\163\164\151\x64"]; stopAutoDJ($pId); writeCalendarFile($pId); $playlistdir = "\43\103\x55\x52\x52\105\116\124\137\x44\111\122\43\57\163\x65\x72\166\x65\162\x2f" . $pId . "\x2f\x70\x6c\141\171\154\151\x73\164\x2f"; $ini_content = "\160\154\141\171\154\151\163\164\146\x69\154\145\75" . $playlistdir . strip_tags(str_replace("\57", '', $pPlaylist)) . "\12"; $response = sendToServer($hid, "\x72\145\x61\x64\144\151\162", $playlistdir); $files = unserialize($response["\x72\x65\163\x75\154\x74"]); $i = 1; foreach ($files as $file) { $ini_content .= "\160\154\141\x79\154\151\x73\x74\x66\151\154\x65\160\141\164\150\x5f" . $i . "\75" . $playlistdir . $file . "\xa"; $ini_content .= "\160\x6c\141\171\154\x69\x73\164\x66\x69\x6c\x65\156\141\x6d\145\137" . $i . "\x3d" . $file . "\xa"; $i++; } $ini_content .= "\163\x74\162\145\x61\x6d\165\x72\154\75\x68\x74\x74\160\x3a\57\57" . $server["\x69\160"] . "\x3a" . $port . "\xa"; $configfields = array("\x61\x70\151\x61\144\x6d\x69\x6e\x70\141\163\x73\167\x6f\x72\144" => "\141\x64\x6d\x69\156\160\x61\163\x73\x77\x6f\x72\x64", "\x61\160\151\x61\144\x6d\151\156\160\157\162\x74" => "\x61\x64\x6d\151\x6e\160\x6f\162\x74", "\141\160\x69\141\x64\x6d\151\156\165\163\145\162" => "\x61\x64\x6d\x69\156\165\x73\x65\162", "\160\x61\163\163\x77\x6f\162\144" => "\160\141\x73\163\167\157\162\144", "\x73\x65\162\166\145\x72\x69\160" => "\x73\145\162\166\x65\162\x69\x70", "\160\157\x72\164\x62\141\x73\145" => "\163\x65\x72\x76\x65\162\160\157\x72\x74", "\163\x68\x75\146\146\154\145" => "\163\x68\x75\x66\x66\x6c\145", "\147\x65\156\x72\145" => "\147\x65\156\162\145", "\x70\165\142\x6c\151\143" => "\160\165\x62\154\x69\143", "\143\141\x6c\x65\x6e\x64\x61\x72\162\x65\x77\x72\x69\x74\145" => "\x63\141\154\x65\x6e\x64\x61\x72\162\145\x77\x72\x69\164\145", "\143\x61\154\145\x6e\x64\x61\162\x66\151\x6c\x65" => "\x63\x61\154\x65\156\x64\x61\x72\x66\x69\154\x65", "\165\x73\145\115\x65\164\x61\144\x61\164\141" => "\x75\x73\145\x4d\145\164\x61\144\x61\164\x61", "\170\x66\141\144\x65" => "\x78\146\x61\x64\x65", "\170\146\x61\x64\145\x74\150\x72\145\163\x68\157\154" => "\170\x66\x61\x64\x65\164\150\162\x65\163\150\157\154\144", "\143\x61\160\164\x75\x72\x65" => "\x63\x61\x70\164\x75\162\145", "\144\152\x70\157\x72\x74\137\61" => "\x64\152\x70\157\162\164\137\61", "\144\x6a\142\162\157\x61\144\x63\x61\163\x74\163" => "\144\x6a\142\162\x6f\x61\144\143\x61\163\164\x73", "\165\156\154\x6f\143\x6b\x6b\x65\x79\x6e\141\155\145" => "\x75\156\x6c\x6f\143\x6b\153\x65\x79\x6e\x61\155\145", "\165\156\154\x6f\143\153\x6b\x65\x79\x63\157\144\x65" => "\x75\156\x6c\157\x63\x6b\x6b\x65\171\x63\x6f\144\145", "\x73\x74\x72\145\x61\155\164\x69\x74\x6c\145" => "\163\x74\x72\145\141\x6d\x74\151\x74\154\x65", "\163\x74\162\x65\x61\x6d\165\162\154" => "\x73\x74\162\x65\x61\x6d\x75\x72\x6c"); foreach ($server as $field => $value) { if (array_key_exists($field, $configfields)) { $configfield = $configfields[$field]; $ini_content .= $configfield . "\x3d" . $value . "\12"; } } $stmt = $mysqli->prepare("\x53\105\114\105\x43\x54\40\52\40\x46\x52\x4f\x4d\40\144\152\163\x20\127\x48\x45\x52\x45\x20\x73\x65\162\166\x65\x72\151\144\x20\75\x20\x3f\x20\x41\x4e\x44\40\x63\141\x6e\163\x74\x72\x65\141\155\x3d\x27\61\47"); $stmt->bind_param("\151", $pId); if (!$stmt->execute()) { return false; } $result = $stmt->get_result(); $i = 1; while ($editsqlrow = $result->fetch_array(MYSQLI_ASSOC)) { $ini_content .= "\144\152\154\x6f\x67\x69\156\x5f" . $i . "\x3d" . $editsqlrow["\x6c\x6f\x67\151\x6e"] . "\12"; $ini_content .= "\144\152\x70\x61\163\163\167\x6f\162\x64\137" . $i . "\x3d" . $editsqlrow["\160\141\163\163\x77\x6f\162\x64"] . "\xa"; $ini_content .= "\x64\x6a\160\162\151\157\x72\151\x74\x79\137" . $i . "\x3d" . $editsqlrow["\x70\x72\x69\157\x72\x69\x74\x79"] . "\xa"; $i++; } $stmt->close(); $server = getServerHost($pId); $shversion = $server["\x73\x68\x6f\x75\x74\x63\x61\163\x74\x5f\166\145\x72\x73\x69\x6f\x6e"]; $query = "\x53\105\114\105\103\124\40\x2a\x20\x46\x52\x4f\115\40\145\156\144\x70\x6f\151\x6e\x74\163\x20\x57\x48\x45\122\105\40\163\x65\162\x76\x65\162\151\144\40\75\x20\x3f\40\x4f\x52\x44\x45\122\40\x42\x59\40\145\x6e\144\x70\x6f\x69\x6e\x74\x73\56\x69\144"; if ($shversion == 1) { $query .= "\x20\x4c\x49\115\x49\x54\x20\61"; } $stmt = $mysqli->prepare($query); $stmt->bind_param("\151", $pId); if (!$stmt->execute()) { return false; } $result = $stmt->get_result(); $i = 1; while ($editsqlrow = $result->fetch_array(MYSQLI_ASSOC)) { $ini_content .= "\142\x69\x74\162\141\164\x65\x5f" . $i . "\75" . $editsqlrow["\142\x69\164\x72\x61\164\x65"] . "\12"; $ini_content .= "\x73\x61\155\x70\x6c\x65\162\141\164\145\137" . $i . "\x3d" . $editsqlrow["\163\141\x6d\160\154\x65\x72\x61\164\145"] . "\xa"; $ini_content .= "\x63\150\141\156\156\x65\154\x73\x5f" . $i . "\x3d" . $editsqlrow["\x63\x68\x61\x6e\156\145\x6c\x73"] . "\12"; $ini_content .= "\x65\x6e\143\x6f\x64\145\x72\x5f" . $i . "\75" . $editsqlrow["\145\x6e\x63\157\x64\x65\162"] . "\xa"; $ini_content .= "\145\156\144\x70\x6f\x69\156\164\156\141\x6d\145\137" . $i . "\x3d" . $editsqlrow["\x6e\141\x6d\x65"] . "\xa"; $ini_content .= "\157\x75\164\160\x72\157\x74\157\143\x6f\x6c\137" . $i . "\x3d" . $editsqlrow["\x6f\x75\x74\x70\x72\157\x74\157\x63\157\x6c"] . "\xa"; $ini_content .= "\163\164\x72\x65\141\155\151\x64\137" . $i . "\75" . $editsqlrow["\163\164\162\x65\x61\x6d\x69\x64"] . "\12"; $ini_content .= "\163\x65\x72\x76\x65\162\x69\160\137" . $i . "\75" . $server["\x73\145\162\166\x65\162\x69\x70"] . "\12"; $ini_content .= "\x73\145\x72\x76\x65\162\x70\157\162\164\x5f" . $i . "\75" . $server["\160\157\x72\164\x62\141\163\145"] . "\xa"; $ini_content .= "\160\x61\163\163\167\x6f\162\x64\137" . $i . "\75" . $server["\160\141\163\x73\x77\x6f\x72\x64"] . "\xa"; $i++; } $stmt->close(); $logfile = str_replace("\x2e\x6c\x6f\147", "\x2e\x74\x72\141\x6e\163\x2e\x6c\157\x67", $server["\154\157\x67\x66\151\154\145"]); $ini_content .= "\x6c\x6f\x67\x66\x69\x6c\x65\x3d" . $logfile . "\xa"; $ini_content .= "\163\x63\x72\145\145\156\x6c\157\x67\75\x31\12"; $ini_content .= "\154\157\x67\75" . $settings["\x6c\157\x67\x73"] . "\12"; $filename = "\x23\x43\x55\x52\122\x45\116\x54\137\104\111\x52\x23\57\163\x65\x72\166\145\x72\x2f" . $pId . "\57\143\157\x6e\x66\57\x73\143\x5f\x74\x72\141\156\x73\56\x63\x6f\x6e\x66"; $response = sendToServer($hid, "\167\x72\151\x74\x65\146\151\154\x65", $filename, $ini_content); $param = array(); $param["\151\x64"] = $pId; $param["\166\x65\162\163\x69\x6f\156"] = $shversion; $param["\x63\x6f\x6e\x66\x69\147\146\x69\x6c\145"] = $filename; $response = sendToServer($hid, "\163\x74\x61\162\x74\x61\165\164\157\x64\x6a", serialize($param), ''); $stmt = $mysqli->prepare("\125\120\x44\101\x54\105\40\163\x65\x72\166\145\162\x73\40\123\x45\124\x20\x61\x75\x74\x6f\x64\x6a\x73\164\x61\164\165\163\40\75\40\x31\54\x20\154\x61\163\164\120\x6c\141\171\154\x69\x73\164\40\x3d\x20\x3f\x20\x57\x48\x45\x52\105\x20\x69\144\40\75\x20\x3f"); $stmt->bind_param("\163\x69", $pPlaylist, $pId); if (!$stmt->execute()) { return false; } return true; } goto C6U6D; m0r1H: 

Did this file decode correctly?

Original Code

<?php eval(base64_decode('CiBnb3RvIGwzNTMzOyBXcjNRbzogZnVuY3Rpb24gR2V0QWxsU29uZ3MoJHNpZCkgeyAkc2VydmVyID0gZ2V0U2VydmVyKCRzaWQpOyAkc29uZ3MgPSBhcnJheSgpOyAkc29uZ3MgPSBhcnJheV9tZXJnZSgkc29uZ3MsIEdldFNvbmdzKCRzZXJ2ZXJbIlwxNTBceDZmXHg3M1x4NzRcMTUxXHg2NCJdLCBHZXRTb25nRGlyZWN0b3J5KCRzaWQsICJcMTY1XHg3MFwxNTRcMTU3XDE0MVx4NjQiKSwgIlwxNjVceDcwXHg2Y1x4NmZcMTQxXHg2NCIpKTsgJHNvbmdzID0gYXJyYXlfbWVyZ2UoJHNvbmdzLCBHZXRTb25ncygkc2VydmVyWyJcMTUwXDE1N1x4NzNcMTY0XHg2OVwxNDQiXSwgR2V0U29uZ0RpcmVjdG9yeSgkc2lkLCAiXHg2MVwxNDQiKSwgIlx4NjFceDY0IikpOyAkc29uZ3MgPSBhcnJheV9tZXJnZSgkc29uZ3MsIEdldFNvbmdzKCRzZXJ2ZXJbIlwxNTBcMTU3XHg3M1wxNjRcMTUxXDE0NCJdLCBHZXRTb25nRGlyZWN0b3J5KCRzaWQsICJceDcyXDE0NVwxNDNceDZmXHg3Mlx4NjQiKSwgIlwxNjJcMTQ1XHg2M1wxNTdceDcyXHg2NCIpKTsgcmV0dXJuICRzb25nczsgfSBnb3RvIHNmVWFsOyBDNlU2RDogZnVuY3Rpb24gc3RvcEF1dG9ESigkcElkKSB7IGdsb2JhbCAkbXlzcWxpOyAkc2VydmVyID0gZ2V0U2VydmVyKCRwSWQpOyAkcG9ydCA9ICRzZXJ2ZXJbIlx4NzBceDZmXDE2Mlx4NzRceDYyXHg2MVwxNjNcMTQ1Il07ICRoaWQgPSAkc2VydmVyWyJcMTUwXHg2Zlx4NzNceDc0XDE1MVwxNDQiXTsgJGNvbmZpZ3Jvb3RwYXRoID0gIlx4MjNcMTAzXDEyNVwxMjJcMTIyXDEwNVwxMTZcMTI0XHg1Zlx4NDRcMTExXDEyMlx4MjNcNTdceDczXDE0NVx4NzJceDc2XDE0NVx4NzJceDJmIiAuICRwSWQgLiAiXHgyZlwxNDNcMTU3XDE1Nlx4NjZcNTciOyAkcmVzcG9uc2UgPSBzZW5kVG9TZXJ2ZXIoJGhpZCwgIlwxNjNcMTY0XHg2ZlwxNjBcMTQxXHg3NVx4NzRceDZmXDE0NFwxNTIiLCAkcElkLCAkY29uZmlncm9vdHBhdGgpOyAkc3RtdCA9ICRteXNxbGktPnByZXBhcmUoIlwxMjVceDUwXDEwNFx4NDFcMTI0XDEwNVx4MjBceDczXHg2NVwxNjJceDc2XDE0NVwxNjJcMTYzXDQwXDEyM1x4NDVcMTI0XHgyMFx4NjFceDc1XHg3NFwxNTdcMTQ0XDE1Mlx4NzNcMTY0XHg2MVwxNjRceDc1XDE2M1x4MjBcNzVceDIwXHgzMFx4MjBcMTI3XHg0OFwxMDVceDUyXHg0NVw0MFx4NjlceDY0XHgyMFw3NVx4MjBceDNmIik7ICRzdG10LT5iaW5kX3BhcmFtKCJceDY5IiwgJHBJZCk7IGlmICghJHN0bXQtPmV4ZWN1dGUoKSkgeyByZXR1cm4gZmFsc2U7IH0gJHN0bXQtPmNsb3NlKCk7IHJldHVybiBhcnJheSgiXHg0MVwxNjVceDc0XHg2ZlwxMDRceDRhXHgyMFx4NjdcMTQ1XDE2M1x4NzRceDZmXDE2MFwxNjBceDc0XHgyMSIpOyB9IGdvdG8gd0piRkE7IGVtd19FOiBmdW5jdGlvbiBtYXhTZXJ2ZXJDb3VudFJlYWNoZWQoKSB7IGlmIChpc0Z1bGxWZXJzaW9uKCkpIHsgcmV0dXJuIGZhbHNlOyB9IGlmIChnZXRTZXJ2ZXJDb3VudCgpIDwgZ2V0TWF4U2VydmVyQ291bnQoKSkgeyByZXR1cm4gZmFsc2U7IH0gcmV0dXJuIHRydWU7IH0gZ290byBqQldLODsgVHRPREc6IGZ1bmN0aW9uIGdldEhvc3RDb3VudCgpIHsgZ2xvYmFsICRteXNxbGk7IGlmIChpc011bHRpVmVyc2lvbigpKSB7IHJldHVybiAwOyB9ICRyZXN1bHQgPSAkbXlzcWxpLT5xdWVyeSgiXDEyM1wxMDVcMTE0XDEwNVwxMDNcMTI0XHgyMFx4NDNcMTE3XHg1NVwxMTZceDU0XDUwXDE1MVx4NjRcNTFcNDBceDQxXDEyM1w0MFx4NjFcMTU2XHg3YVx4MjBcMTA2XHg1Mlx4NGZceDRkXHgyMFx4NjhcMTU3XHg3M1wxNjRceDczXDczIik7ICRkYXRhID0gJHJlc3VsdC0+ZmV0Y2hfYXJyYXkoTVlTUUxJX0FTU09DKTsgcmV0dXJuICRkYXRhWyJcMTQxXHg2ZVx4N2EiXTsgfSBnb3RvIFJ3NnZJOyB0aEI2aDogZnVuY3Rpb24gZ2V0VXNlckNvdW50KCkgeyBnbG9iYWwgJG15c3FsaTsgaWYgKGlzRnVsbFZlcnNpb24oKSkgeyByZXR1cm4gMDsgfSAkcmVzdWx0ID0gJG15c3FsaS0+cXVlcnkoIlx4NTNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBcMTAzXDExN1x4NTVcMTE2XDEyNFx4MjhceDY5XHg2NFx4MjlcNDBcMTAxXDEyM1w0MFwxNDFceDZlXDE3Mlw0MFwxMDZcMTIyXDExN1x4NGRceDIwXDE2NVx4NzNceDY1XDE2MlwxNjNcNzMiKTsgcmV0dXJuICRyZXN1bHQtPmZldGNoX2FycmF5KE1ZU1FMSV9BU1NPQylbIlx4NjFcMTU2XHg3YSJdOyB9IGdvdG8gVHRPREc7IGJMSnhvOiBmdW5jdGlvbiBnZXRQZXJjZW50U3RvcmFnZVVzZWQoJHBJZCwgJG1heHNpemUpIHsgJGFjdHVhbF9kaXJfc2l6ZSA9IGdldFN0b3JhZ2VVc2VkKCRwSWQpOyBpZiAoJG1heHNpemUgIT0gMCkgeyAkcGVyY2VudCA9IDEwMCAtIHJvdW5kKCRhY3R1YWxfZGlyX3NpemUgLyAkbWF4c2l6ZSAqIDEwMCk7IH0gZWxzZSB7ICRwZXJjZW50ID0gMDsgfSByZXR1cm4gJHBlcmNlbnQ7IH0gZ290byBwbkdWXzsgc2ZVYWw6IGZ1bmN0aW9uIEdldFBsYXlsaXN0cygkc2lkKSB7ICRzZXJ2ZXIgPSBnZXRTZXJ2ZXIoJHNpZCk7ICRwbGF5bGlzdGRpciA9ICJcNDNceDQzXHg1NVx4NTJcMTIyXDEwNVwxMTZceDU0XHg1Zlx4NDRcMTExXHg1Mlw0M1x4MmZcMTYzXHg2NVx4NzJcMTY2XHg2NVwxNjJceDJmIiAuICRzZXJ2ZXJbIlx4NjlcMTQ0Il0gLiAiXHgyZlwxNjBceDZjXDE0MVwxNzFceDZjXHg2OVwxNjNcMTY0XHgyZiI7ICRyZXNwb25zZSA9IHNlbmRUb1NlcnZlcigkc2VydmVyWyJceDY4XDE1N1x4NzNceDc0XDE1MVwxNDQiXSwgIlx4NzJceDY1XDE0MVx4NjRceDY0XDE1MVx4NzIiLCAkcGxheWxpc3RkaXIsICcnKTsgJHJlY2lldmVkRmlsZXMgPSB1bnNlcmlhbGl6ZSgkcmVzcG9uc2VbIlwxNjJcMTQ1XHg3M1x4NzVcMTU0XDE2NCJdKTsgJGZpbGVzID0gYXJyYXkoKTsgZm9yZWFjaCAoJHJlY2lldmVkRmlsZXMgYXMgJGZpbGUpIHsgaWYgKCRmaWxlICE9ICJceDJlIiAmJiAkZmlsZSAhPSAiXDU2XDU2IikgeyAkZmlsZXNbXSA9ICRmaWxlOyB9IH0gcmV0dXJuICRmaWxlczsgfSBnb3RvIG0wcjFIOyBwbkdWXzogZnVuY3Rpb24gZ2V0TWF4U2VydmVyQ291bnQoKSB7IHJldHVybiA1OyB9IGdvdG8gUHRWMHU7IHhaSVVwOiBmdW5jdGlvbiBnZXRTZXJ2ZXJIb3N0KCRwSWQpIHsgZ2xvYmFsICRteXNxbGk7ICRzdG10ID0gJG15c3FsaS0+cHJlcGFyZSgiXDEyM1wxMDVceDRjXDEwNVwxMDNcMTI0XHgyMFx4MmFcNTRceDczXHg2NVwxNjJceDc2XHg2NVwxNjJcMTYzXHgyZVwxNTFcMTQ0XHgyMFwxMDFceDUzXDQwXDE2M1x4NjlceDY0XDU0XHg2OFx4NmZceDczXHg3NFwxNjNceDJlXHg2OVwxNDRcNDBcMTQxXHg3M1w0MFwxNTBcMTUxXHg2NFx4MjBcMTA2XDEyMlx4NGZcMTE1XHgyMFwxNjNcMTQ1XHg3MlwxNjZcMTQ1XDE2MlwxNjNceDIwXHg0Y1x4NDVcMTA2XDEyNFw0MFx4NGFceDRmXDExMVx4NGVceDIwXHg2OFx4NmZcMTYzXHg3NFwxNjNceDIwXHg0Zlx4NGVceDIwXDE2M1x4NjVceDcyXHg3NlwxNDVcMTYyXHg3M1x4MmVceDY4XDE1N1wxNjNceDc0XHg2OVwxNDRcNDBceDNkXDQwXDE1MFx4NmZcMTYzXHg3NFwxNjNceDJlXDE1MVx4NjRcNDBceDU3XDExMFwxMDVceDUyXHg0NVx4MjBceDczXHg2NVx4NzJcMTY2XHg2NVwxNjJcMTYzXDU2XHg2OVwxNDRceDIwXDc1XDQwXHgzZiIpOyAkc3RtdC0+YmluZF9wYXJhbSgiXHg2OSIsICRwSWQpOyBpZiAoISRzdG10LT5leGVjdXRlKCkpIHsgcmV0dXJuIGZhbHNlOyB9ICRyZXN1bHQgPSAkc3RtdC0+Z2V0X3Jlc3VsdCgpOyBpZiAoJHJlc3VsdC0+bnVtX3Jvd3MgIT09IDEpIHsgYWRkRXJyb3IoIlwxMjNcMTQ1XHg3Mlx4NzZceDY1XHg3Mlx4MjBceDZiXDE1N1wxNTZceDZlXHg3NFx4NjVceDIwXHg2ZVwxNTFcMTQzXDE1MFwxNjRceDIwXHg2N1wxNDVcMTQ2XHg3NVx4NmVcMTQ0XDE0NVwxNTZcNDBcMTY3XDE0NVx4NzJcMTQ0XHg2NVwxNTZcNDEiKTsgcmV0dXJuIGZhbHNlOyB9ICRyZXQgPSAkcmVzdWx0LT5mZXRjaF9hcnJheShNWVNRTElfQVNTT0MpOyAkc3RtdC0+Y2xvc2UoKTsgcmV0dXJuICRyZXQ7IH0gZ290byBZTEw3TzsgTUpmMmQ6IGZ1bmN0aW9uIGdldFN0b3JhZ2VVc2VkKCRwSWQpIHsgZ2xvYmFsICRteXNxbGk7ICRyZXQgPSAwOyAkc2VydmVyID0gZ2V0U2VydmVyKCRwSWQpOyAkaGlkID0gJHNlcnZlclsiXHg2OFwxNTdcMTYzXDE2NFx4NjlceDY0Il07ICRyZXNwb25zZSA9IHNlbmRUb1NlcnZlcigkaGlkLCAiXHg2N1x4NjVceDc0XHg3M1x4NzRcMTU3XHg3Mlx4NjFcMTQ3XDE0NSIsICRwSWQsICcnKTsgaWYgKCFpc3NldCgkcmVzcG9uc2UpKSB7IHJldHVybiAwOyB9ICRyZXQgPSBpbnR2YWwoJHJlc3BvbnNlWyJceDcyXHg2NVwxNjNceDc1XDE1NFwxNjQiXSk7IHJldHVybiAkcmV0OyB9IGdvdG8gYkxKeG87IFhkbUdDOiBmdW5jdGlvbiBoYXZlVmFsaWRMaWNlbnNlKCkgeyByZXR1cm4gdHJ1ZTsgfSBnb3RvIFhCM2RGOyB6bm0xNDogZnVuY3Rpb24gc2VuZFRvU2VydmVyKCRwSG9zdElkLCAkcENvbW1hbmQsICRwVmFsdWUwLCAkcFZhbHVlMSA9ICcnKSB7IGdsb2JhbCAkbXlzcWxpOyAkcmV0ID0gYXJyYXkoKTsgJHN0bXQgPSAkbXlzcWxpLT5wcmVwYXJlKCJceDUzXDEwNVx4NGNcMTA1XDEwM1wxMjRceDIwXHg3NVx4NzJceDZjXHgyMFwxMDZceDUyXHg0Zlx4NGRcNDBcMTUwXDE1N1x4NzNcMTY0XDE2M1w0MFx4NTdcMTEwXDEwNVwxMjJcMTA1XDQwXDE1MVwxNDRceDIwXDc1XHgyMFw3NyIpOyAkc3RtdC0+YmluZF9wYXJhbSgiXHg2OSIsICRwSG9zdElkKTsgJHN0bXQtPmV4ZWN1dGUoKTsgJHNxbGhvc3R1cmwgPSAkc3RtdC0+Z2V0X3Jlc3VsdCgpOyBpZiAobXlzcWxpX251bV9yb3dzKCRzcWxob3N0dXJsKSAhPSAxKSB7ICRyZXRbIlx4NjVceDcyXHg3MlwxNTdceDcyIl0gPSAiXHg0OFwxNTdcMTYzXDE2NFw0MFx4NmJceDZmXDE1NlwxNTZceDc0XHg2NVx4MjBcMTU2XDE1MVx4NjNcMTUwXHg3NFx4MjBcMTQ3XDE0NVwxNDZceDc1XDE1NlwxNDRcMTQ1XDE1Nlx4MjBcMTY3XHg2NVx4NzJcMTQ0XDE0NVx4NmVcNDEiOyByZXR1cm4gJHJldDsgfSB3aGlsZSAoJGRhdGEgPSBteXNxbGlfZmV0Y2hfYXJyYXkoJHNxbGhvc3R1cmwpKSB7ICRjdXJyZW50SG9zdFVSTCA9ICRkYXRhWyJceDc1XDE2Mlx4NmMiXTsgfSBpZiAoJHBDb21tYW5kID09ICJceDczXHg2MVwxNjZceDY1XHg2Mlx4NjlcMTQ3XHg2NlwxNTFcMTU0XHg2NSIpIHsgJHBWYWx1ZTEgPSBnemNvbXByZXNzKCRwVmFsdWUxLCA0KTsgfSBlbHNlIHsgJHBWYWx1ZTEgPSBlbmNyeXB0KGJhc2U2NF9lbmNvZGUoJHBWYWx1ZTEpKTsgfSAkZGF0YSA9IGFycmF5KCJceDYzXHg2ZFx4NjQiID0+IGVuY3J5cHQoYmFzZTY0X2VuY29kZSgkcENvbW1hbmQpKSwgIlwxNjZcMTQxXHg2Y1x4NzVceDY1XHgzMCIgPT4gZW5jcnlwdChiYXNlNjRfZW5jb2RlKCRwVmFsdWUwKSksICJceDc2XDE0MVwxNTRcMTY1XDE0NVw2MSIgPT4gJHBWYWx1ZTEpOyAkb3B0aW9ucyA9IGFycmF5KCJceDY4XHg3NFwxNjRcMTYwIiA9PiBhcnJheSgiXDE1MFwxNDVceDYxXHg2NFwxNDVceDcyIiA9PiAiXHg0M1wxNTdceDZlXDE2NFx4NjVcMTU2XHg3NFw1NVx4NzRcMTcxXHg3MFx4NjVcNzJcNDBceDYxXDE2MFwxNjBcMTU0XDE1MVwxNDNcMTQxXHg3NFx4NjlceDZmXDE1Nlw1N1wxNzBcNTVceDc3XDE2N1x4NzdcNTVcMTQ2XHg2Zlx4NzJcMTU1XHgyZFx4NzVcMTYyXDE1NFwxNDVcMTU2XHg2M1wxNTdceDY0XDE0NVx4NjRceGEiLCAiXDE1NVwxNDVceDc0XHg2OFx4NmZcMTQ0IiA9PiAiXDEyMFx4NGZceDUzXDEyNCIsICJceDYzXHg2ZlwxNTZceDc0XDE0NVx4NmVceDc0IiA9PiBodHRwX2J1aWxkX3F1ZXJ5KCRkYXRhKSkpOyAkY29udGV4dCA9IHN0cmVhbV9jb250ZXh0X2NyZWF0ZSgkb3B0aW9ucyk7ICRyZXRbIlwxNjJceDY1XHg3M1wxNjVceDZjXDE2NCJdID0gZmlsZV9nZXRfY29udGVudHMoJGN1cnJlbnRIb3N0VVJMLCBmYWxzZSwgJGNvbnRleHQpOyBpZiAoJHJldFsiXDE2MlwxNDVcMTYzXHg3NVx4NmNceDc0Il0gPT0gIlx4NmVcMTY1XDE1NFwxNTQiKSB7ICRyZXRbIlwxNjJceDY1XDE2M1x4NzVceDZjXDE2NCJdID0gbnVsbDsgfSByZXR1cm4gJHJldDsgfSBnb3RvIElIeUwxOyBSdzZ2STogZnVuY3Rpb24gaXNGdWxsVmVyc2lvbigpIHsgZ2xvYmFsICRTcGVjaWFsUGhwVmVyc2lvbjsgaWYgKCFpc3NldCgkU3BlY2lhbFBocFZlcnNpb24pKSB7IGhhdmVWYWxpZExpY2Vuc2UoKTsgfSByZXR1cm4gJFNwZWNpYWxQaHBWZXJzaW9uOyB9IGdvdG8gQl9MaWY7IGpCV0s4OiBmdW5jdGlvbiBnZXRUb29NdWNoU2VydmVycygpIHsgcmV0dXJuIGdldFNlcnZlckNvdW50KCkgPiBnZXRNYXhTZXJ2ZXJDb3VudCgpOyB9IGdvdG8gaVNWTTY7IFdwb1hZOiBmdW5jdGlvbiBHZXRTb25ncygkaGlkLCAkZmlsZXBhdGgsICRmaWxldHlwZSkgeyAkcmVzcG9uc2UgPSBzZW5kVG9TZXJ2ZXIoJGhpZCwgIlwxNjJceDY1XDE0MVx4NjRcMTQ0XDE1MVx4NzIiLCAkZmlsZXBhdGgsICcnKTsgJHJldCA9IGFycmF5KCk7IGlmICghJHJlc3BvbnNlWyJcMTYyXHg2NVx4NzNceDc1XDE1NFx4NzQiXSB8fCAkcmVzcG9uc2VbIlwxNjJceDY1XHg3M1wxNjVcMTU0XDE2NCJdID09ICJceDRlXDExN1x4NTRceDVmXHg0NVwxMzBceDQ5XDEyM1wxMjRceDUzIikgeyByZXR1cm4gJHJldDsgfSAkZmlsZXMgPSB1bnNlcmlhbGl6ZSgkcmVzcG9uc2VbIlx4NzJceDY1XDE2M1x4NzVceDZjXHg3NCJdKTsgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7IGlmICgkZmlsZSAhPSAnJyAmJiAkZmlsZSAhPSAiXHgyZSIgJiYgJGZpbGUgIT0gIlx4MmVceDJlIikgeyAkZmlsZW5hbWUgPSBzdWJzdHIoJGZpbGUsIHN0cnJwb3MoJGZpbGUsICJceDJmIikpOyBpZiAoIWVuZHNXaXRoKCRmaWxlbmFtZSwgIlx4MmVcMTU1XDE2MFw2MyIpKSB7IGNvbnRpbnVlOyB9ICRyZXRbXSA9IGFycmF5KGh0bWxlbnRpdGllcygkZmlsZW5hbWUpLCAkZmlsZXR5cGUpOyB9IH0gcmV0dXJuICRyZXQ7IH0gZ290byBXcjNRbzsgQl9MaWY6IGZ1bmN0aW9uIGlzTXVsdGlWZXJzaW9uKCkgeyBnbG9iYWwgJFNwZWNpYWxQaHBWZXJzaW9uMjsgaWYgKCFpc3NldCgkU3BlY2lhbFBocFZlcnNpb24yKSkgeyBoYXZlVmFsaWRMaWNlbnNlKCk7IH0gcmV0dXJuICRTcGVjaWFsUGhwVmVyc2lvbjI7IH0gZ290byBmWjZDMDsgUkxMZ3c6IGZ1bmN0aW9uIEdldFNvbmdEaXJlY3RvcnkoJHBJZCwgJHR5cGUpIHsgaWYgKCR0eXBlID09ICJcMTQxXHg2NCIpIHsgcmV0dXJuICJcNDNceDQzXHg1NVwxMjJceDUyXDEwNVwxMTZceDU0XDEzN1x4NDRcMTExXHg1Mlw0M1x4MmZcMTYzXHg2NVx4NzJcMTY2XHg2NVwxNjJceDJmIiAuICRwSWQgLiAiXHgyZlx4NzVcMTYwXHg2Y1wxNTdcMTQxXDE0NFwxNjNcNTdceDYxXDE0NFwxNjNcNTciOyB9IGlmICgkdHlwZSA9PSAiXHg3MlwxNDVcMTQzXHg2Zlx4NzJceDY0IikgeyByZXR1cm4gIlw0M1x4NDNceDU1XHg1MlwxMjJcMTA1XDExNlx4NTRceDVmXHg0NFwxMTFceDUyXHgyM1x4MmZcMTYzXHg2NVwxNjJcMTY2XHg2NVx4NzJcNTciIC4gJHBJZCAuICJcNTdcMTYyXDE0NVwxNDNcMTU3XDE2MlwxNDRcMTQ1XDE0NFw1NyI7IH0gcmV0dXJuICJcNDNceDQzXDEyNVwxMjJceDUyXHg0NVx4NGVcMTI0XDEzN1wxMDRceDQ5XDEyMlw0M1x4MmZcMTYzXDE0NVwxNjJceDc2XHg2NVwxNjJcNTciIC4gJHBJZCAuICJceDJmXHg3NVwxNjBceDZjXDE1N1x4NjFceDY0XDE2M1w1NyI7IH0gZ290byBXcG9YWTsgVlk4U1Y6IGZ1bmN0aW9uIEdldFJvbGUoJHVzZXIpIHsgJHJvbGUgPSAkdXNlclsiXDE2NVx4NzNcMTQ1XDE2MlwxMzdcMTU0XHg2NVx4NzZceDY1XDE1NCJdOyBpZiAoJHJvbGUgPT0gIlwxMDRcMTUyIikgeyByZXR1cm4gMTsgfSBpZiAoJHJvbGUgPT0gIlwxMjVcMTYzXDE0NVwxNjIiKSB7IHJldHVybiAyOyB9IGlmICgkcm9sZSA9PSAiXDEwMVx4NjRcMTU1XHg2OVx4NmUiKSB7IHJldHVybiAzOyB9IGlmICgkcm9sZSA9PSAiXDEyM1wxNjVceDcwXDE0NVx4NzJceDIwXHg0MVx4NjRceDZkXHg2OVx4NmVcMTUxXDE2M1wxNjRceDcyXDE0MVx4NzRceDZmXDE2MiIpIHsgcmV0dXJuIDQ7IH0gcmV0dXJuIDA7IH0gZ290byBic2xUWDsgZlo2QzA6IGZ1bmN0aW9uIHVybHN0cmlwKCRzdHIpIHsgJHN0ciA9IHN0cl9yZXBsYWNlKCJcNDYiLCAnJywgJHN0cik7ICRzdHIgPSBzdHJfcmVwbGFjZSgiXDczIiwgJycsICRzdHIpOyAkc3RyID0gc3RyX3JlcGxhY2UoIlx4M2QiLCAnJywgJHN0cik7ICRzdHIgPSBzdHJfcmVwbGFjZSgiXHgzZiIsICcnLCAkc3RyKTsgcmV0dXJuICRzdHI7IH0gZ290byBYZG1HQzsgbDM1MzM6IGZ1bmN0aW9uIFdyaXRlQ3VycmVudFNlcnZlckJhZGdlKCkgeyAkc2VydmVyID0gZ2V0U2VydmVySG9zdCgkX0dFVFsiXHg3M1wxNTFceDY0Il0pOyBlY2hvICJcNzRceDczXDE2MFwxNDFceDZlXHgyMFwxNDNcMTU0XDE0MVx4NzNcMTYzXDc1XHgyMlwxNDJceDYxXDE0NFx4NjdcMTQ1XDQwXDE0MlwxNDFceDY0XDE0N1x4NjVceDJkXHg3MFx4NzJcMTUxXDE1NVwxNDFcMTYyXDE3MVx4MjJceDIwXDE0NFx4NjFceDc0XDE0MVw1NVx4NzRceDZmXHg2N1wxNDdcMTU0XHg2NVw3NVw0MlwxNjRceDZmXDE1N1x4NmNceDc0XHg2OVx4NzBcNDJceDIwXDE0NFwxNDFcMTY0XDE0MVw1NVx4NzBceDZjXHg2MVwxNDNceDY1XHg2ZFwxNDVceDZlXDE2NFx4M2RcNDJcMTQyXDE1N1x4NzRceDc0XDE1N1wxNTVceDIyXDQwXDE2NFx4NjlceDc0XHg2Y1wxNDVceDNkXHgyMlx4NDFceDc1XHg3M1x4NjdcMTQ1XHg3N1x4YzNcMjAzXHhjMlx4YTRcMTUwXHg2Y1x4NzRceDY1XDE2Mlw0MFwxMjNceDY4XDE1N1x4NzVceDc0XDE0M1wxNDFcMTYzXDE2NFx4MjBceDUzXHg2NVwxNjJcMTY2XDE0NVwxNjJceDIyXHgzZSIgLiAkc2VydmVyWyJceDY5XDE2MCJdIC4gIlw3MiIgLiAkc2VydmVyWyJceDcwXDE1N1x4NzJceDc0XHg2Mlx4NjFceDczXHg2NSJdIC4gIlw3NFw1N1wxNjNceDcwXDE0MVwxNTZceDNlIjsgfSBnb3RvIG9BRWNmOyB3SmJGQTogZnVuY3Rpb24gd3JpdGVDYWxlbmRhckZpbGUoJHBJZCkgeyBnbG9iYWwgJG15c3FsaTsgJHBJZCA9IGludHZhbCgkcElkKTsgJHNlcnZlciA9IGdldFNlcnZlcigkcElkKTsgJHBvcnQgPSAkc2VydmVyWyJceDcwXHg2Zlx4NzJceDc0XDE0MlwxNDFcMTYzXHg2NSJdOyAkaGlkID0gJHNlcnZlclsiXDE1MFwxNTdcMTYzXHg3NFx4NjlceDY0Il07ICR4bWwgPSAiXHgzY1w3N1x4NzhceDZkXDE1NFx4MjBceDc2XHg2NVwxNjJceDczXDE1MVwxNTdcMTU2XDc1XHgyMlx4MzFceDJlXDYwXHgyMlw0MFwxNDVcMTU2XDE0M1x4NmZcMTQ0XDE1MVwxNTZceDY3XHgzZFw0MlwxMjVceDU0XDEwNlx4MmRcNzBcNDJcNDBceDNmXHgzZVx4YSI7ICR4bWwgLj0gIlw3NFx4NjVcMTY2XHg2NVx4NmVceDc0XHg2Y1x4NjlcMTYzXDE2NFw3Nlx4YSI7ICRzdG10ID0gJG15c3FsaS0+cHJlcGFyZSgiXHg1M1wxMDVcMTE0XHg0NVx4NDNcMTI0XHgyMFx4MmFcNDBceDQ2XDEyMlx4NGZceDRkXDQwXDE0NFwxNTJcMTYzXHgyMFwxMjdcMTEwXHg0NVx4NTJcMTA1XHgyMFwxNjNcMTQ1XDE2Mlx4NzZceDY1XDE2Mlx4NjlceDY0XDQwXDc1XDQwXHgzZlw0MFx4NDFceDRlXHg0NFw0MFx4NjNceDYxXDE1NlwxNjNceDc0XHg3Mlx4NjVceDYxXDE1NVw3NVx4MjdcNjFceDI3XHgyMFx4NGZceDUyXDEwNFwxMDVceDUyXDQwXHg0Mlx4NTlcNDBcMTUxXHg2NFx4MjBceDQ0XDEwNVwxMjNceDQzIik7ICRzdG10LT5iaW5kX3BhcmFtKCJcMTUxIiwgJHBJZCk7IGlmICghJHN0bXQtPmV4ZWN1dGUoKSkgeyByZXR1cm4gZmFsc2U7IH0gJHJlc3VsdCA9ICRzdG10LT5nZXRfcmVzdWx0KCk7IGlmICgkcmVzdWx0LT5udW1fcm93cyA+IDApIHsgd2hpbGUgKCRkYXRhID0gJHJlc3VsdC0+ZmV0Y2hfYXJyYXkoTVlTUUxJX0FTU09DKSkgeyAkeG1sIC49ICJceDNjXHg2NVwxNjZceDY1XHg2ZVwxNjRceDIwXDE2NFwxNzFcMTYwXDE0NVx4M2RceDIyXHg2NFwxNTJceDIyXDc2XDEyIjsgJHhtbCAuPSAiXHgzY1wxNDRcMTUyXHgyMFwxNDFcMTYyXDE0M1x4NjhcMTUxXDE2NlwxNDVcNzVceDIyIiAuICRkYXRhWyJceDYxXHg3Mlx4NjNceDY4XHg2OVx4NzZceDY1Il0gLiAiXHgyMlw0MFx4NzBceDcyXDE1MVwxNTdceDcyXDE1MVx4NzRceDc5XDc1XHgyMiIgLiAkZGF0YVsiXHg3MFx4NzJceDY5XHg2ZlwxNjJcMTUxXDE2NFx4NzkiXSAuICJceDIyXHgzZSIgLiAkZGF0YVsiXHg2Y1wxNTdcMTQ3XHg2OVwxNTYiXSAuICJceDNjXHgyZlx4NjRcMTUyXDc2XHhhIjsgJHhtbCAuPSAiXHgzY1wxNDNceDYxXDE1NFwxNDVcMTU2XHg2NFx4NjFceDcyXHgyMFw1N1w3Nlx4YSI7ICR4bWwgLj0gIlx4M2NceDJmXDE0NVwxNjZceDY1XHg2ZVwxNjRcNzZcMTIiOyB9IH0gJHN0bXQgPSAkbXlzcWxpLT5wcmVwYXJlKCJceDUzXDEwNVwxMTRcMTA1XDEwM1x4NTRceDIwXHgyYVx4MjBcMTA2XHg1Mlx4NGZcMTE1XHgyMFx4NjVceDc2XHg2NVx4NmVcMTY0XHg3M1x4MjBcMTI3XDExMFx4NDVcMTIyXDEwNVw0MFwxNjNceDY1XHg3MlwxNjZcMTQ1XDE2Mlx4NjlcMTQ0XDQwXDc1XDQwXHgzZlx4MjBceDRmXDEyMlwxMDRcMTA1XDEyMlw0MFx4NDJceDU5XDQwXDE1MVx4NjRcNDBcMTA0XDEwNVwxMjNcMTAzIik7ICRzdG10LT5iaW5kX3BhcmFtKCJcMTUxIiwgJHBJZCk7IGlmICghJHN0bXQtPmV4ZWN1dGUoKSkgeyByZXR1cm4gZmFsc2U7IH0gJHJlc3VsdCA9ICRzdG10LT5nZXRfcmVzdWx0KCk7IGlmICgkcmVzdWx0LT5udW1fcm93cyA+IDApIHsgd2hpbGUgKCRkYXRhID0gJHJlc3VsdC0+ZmV0Y2hfYXJyYXkoTVlTUUxJX0FTU09DKSkgeyAkeG1sIC49ICJcNzRceDY1XHg3NlwxNDVcMTU2XDE2NFx4MjBceDc0XHg3OVx4NzBceDY1XDc1XHgyMiIgLiAkZGF0YVsiXHg3NFx4NzlcMTYwXHg2NSJdIC4gIlw0Mlx4M2UiIC4gIlwxMiI7ICR4bWwgLj0gIlw3NFwxNDNcMTQxXHg2Y1x4NjVcMTU2XHg2NFx4NjFceDcyXDQwXDE2M1wxNjRceDYxXDE2MlwxNjRceDY0XHg2MVx4NzRceDY1XDc1XHgyMiIgLiAkZGF0YVsiXDE2M1wxNjRceDYxXHg3Mlx4NzRceDY0XHg2MVwxNjRceDY1Il0gLiAiXDQyXDQwXHg2NVx4NmVceDY0XHg2NFwxNDFceDc0XHg2NVx4M2RceDIyIiAuICRkYXRhWyJcMTQ1XDE1Nlx4NjRceDY0XDE0MVx4NzRceDY1Il0gLiAiXDQyXDQwXDE2M1wxNjRcMTQxXDE2MlwxNjRcMTY0XDE1MVx4NmRcMTQ1XHgzZFw0MiIgLiAkZGF0YVsiXDE2M1x4NzRcMTQxXDE2Mlx4NzRceDc0XDE1MVwxNTVceDY1Il0gLiAiXDQyXDQwXHg2NFwxNjVcMTYyXDE0MVwxNjRceDY5XDE1N1wxNTZceDNkXHgyMiIgLiAkZGF0YVsiXHg2NFwxNjVceDcyXDE0MVwxNjRceDY5XHg2Zlx4NmUiXSAuICJcNDJceDIwXDE2Mlx4NjVcMTYwXDE0NVx4NjFcMTY0XHgzZFx4MjIiIC4gJGRhdGFbIlx4NzJceDY1XDE2MFwxNDVceDYxXHg3NCJdIC4gIlx4MjJceDIwXHg3NFwxNTFcMTU1XHg2NVx4NmZceDY2XDE0Nlx4NzNceDY1XDE2NFw3NVx4MjIiIC4gJGRhdGFbIlx4NzRcMTUxXHg2ZFwxNDVceDZmXDE0NlwxNDZcMTYzXDE0NVx4NzQiXSAuICJceDIyXDQwXDU3XDc2IiAuICJceGEiOyAkeG1sIC49ICJceDNjXHg3MFwxNTRceDYxXHg3OVwxNTRceDY5XDE2M1wxNjRcNDBcMTU0XDE1N1x4NmZceDcwXHg2MVwxNjRceDY1XHg2ZVx4NjRcNzVcNDIiIC4gJGRhdGFbIlx4NmNceDZmXHg2Zlx4NzBceDYxXDE2NFwxNDVcMTU2XDE0NCJdIC4gIlx4MjJcNDBcMTYzXDE1MFx4NzVceDY2XDE0NlwxNTRceDY1XHgzZFw0MiIgLiAkZGF0YVsiXDE2M1x4NjhceDc1XHg2NlwxNDZcMTU0XDE0NSJdIC4gIlw0Mlw0MFx4NzBcMTYyXDE1MVx4NmZceDcyXDE1MVx4NzRcMTcxXHgzZFx4MjIiIC4gJGRhdGFbIlx4NzBcMTYyXDE1MVwxNTdcMTYyXDE1MVwxNjRcMTcxIl0gLiAiXDQyXHgzZSIgLiAiXDEyIjsgJHhtbCAuPSAkZGF0YVsiXHg3MFx4NmNceDYxXHg3OVx4NmNcMTUxXDE2M1wxNjQiXTsgJHhtbCAuPSAiXHgzY1x4MmZceDcwXHg2Y1wxNDFcMTcxXDE1NFwxNTFcMTYzXHg3NFw3NiIgLiAiXDEyIjsgJHhtbCAuPSAiXHgzY1x4MmZcMTQ1XHg3Nlx4NjVceDZlXDE2NFx4M2VceGEiOyB9IH0gJHhtbCAuPSAiXHgzY1w1N1x4NjVceDc2XHg2NVwxNTZceDc0XHg2Y1x4NjlcMTYzXHg3NFx4M2UiOyAkZmlsZW5hbWUgPSAiXDQzXDEwM1wxMjVceDUyXHg1MlwxMDVcMTE2XHg1NFwxMzdcMTA0XHg0OVx4NTJceDIzXDU3XDE2M1x4NjVceDcyXDE2Nlx4NjVcMTYyXHgyZiIgLiAkcElkIC4gIlw1N1x4NjNceDYxXHg2Y1wxNDVceDZlXHg2NFwxNDFcMTYyXDU2XHg3OFwxNTVcMTU0IjsgJHJlc3BvbnNlID0gc2VuZFRvU2VydmVyKCRoaWQsICJceDc3XHg3Mlx4NjlceDc0XHg2NVx4NjZcMTUxXDE1NFx4NjUiLCAkZmlsZW5hbWUsICR4bWwpOyByZXR1cm4gdHJ1ZTsgfSBnb3RvIE1KZjJkOyBnTk1WWDogZnVuY3Rpb24gc3RvcFNlcnZlcigkcElkKSB7IGdsb2JhbCAkbXlzcWxpOyBzdG9wQXV0b0RKKCRwSWQpOyAkc2VydmVyID0gZ2V0U2VydmVyKCRwSWQpOyAkcG9ydCA9ICRzZXJ2ZXJbIlwxNjBceDZmXHg3Mlx4NzRcMTQyXHg2MVwxNjNcMTQ1Il07ICRoaWQgPSAkc2VydmVyWyJceDY4XHg2Zlx4NzNcMTY0XDE1MVx4NjQiXTsgJGNvbmZpZ3Jvb3RwYXRoID0gIlw0M1x4NDNceDU1XDEyMlx4NTJcMTA1XDExNlx4NTRceDVmXDEwNFwxMTFceDUyXDQzXHgyZlx4NzNcMTQ1XDE2MlwxNjZcMTQ1XHg3Mlx4MmYiIC4gJHBJZCAuICJcNTdcMTQzXHg2Zlx4NmVcMTQ2XHgyZiI7ICRyZXNwb25zZSA9IHNlbmRUb1NlcnZlcigkaGlkLCAiXHg3M1x4NzRcMTU3XHg3MFwxNjNceDY1XHg3MlwxNjZcMTQ1XHg3MiIsICRwSWQsICRjb25maWdyb290cGF0aCk7ICRzdG10ID0gJG15c3FsaS0+cHJlcGFyZSgiXDEyNVx4NTBcMTA0XDEwMVx4NTRceDQ1XHgyMFx4NzNcMTQ1XDE2Mlx4NzZcMTQ1XDE2MlwxNjNceDIwXDEyM1x4NDVceDU0XDQwXDE2M1wxNDVceDcyXDE2NlwxNDVceDcyXHg3M1x4NzRceDYxXDE2NFwxNjVceDczXDQwXHgzZFx4MjBcNjBceDIwXDEyN1x4NDhcMTA1XHg1MlwxMDVcNDBcMTUxXDE0NFw0MFw3NVx4MjBceDNmIik7ICRzdG10LT5iaW5kX3BhcmFtKCJcMTUxIiwgJHBJZCk7IGlmICghJHN0bXQtPmV4ZWN1dGUoKSkgeyByZXR1cm4gZmFsc2U7IH0gJHN0bXQtPmNsb3NlKCk7IHJldHVybiBhcnJheSgiXHg1M1wxNDVcMTYyXHg3NlwxNDVcMTYyXDQwXHg2N1wxNDVceDczXDE2NFwxNTdceDcwXHg3MFwxNjRceDIxIik7IH0gZ290byBOY2pxNDsgSlJnZHo6IGZ1bmN0aW9uIGdldFNlcnZlckNvdW50KCkgeyBnbG9iYWwgJG15c3FsaTsgaWYgKGlzRnVsbFZlcnNpb24oKSkgeyByZXR1cm4gMDsgfSAkcmVzdWx0ID0gJG15c3FsaS0+cXVlcnkoIlwxMjNceDQ1XHg0Y1x4NDVceDQzXHg1NFx4MjBcMTAzXHg0Zlx4NTVceDRlXDEyNFx4MjhceDY5XHg2NFw1MVw0MFx4NDFceDUzXDQwXHg2MVx4NmVceDdhXHgyMFx4NDZceDUyXDExN1wxMTVceDIwXDE2M1wxNDVcMTYyXDE2NlwxNDVcMTYyXHg3M1w3MyIpOyByZXR1cm4gJHJlc3VsdC0+ZmV0Y2hfYXJyYXkoTVlTUUxJX0FTU09DKVsiXDE0MVx4NmVceDdhIl07IH0gZ290byB0aEI2aDsgb0FFY2Y6IGZ1bmN0aW9uIGdldFNlcnZlcigkcElkKSB7IGdsb2JhbCAkbXlzcWxpOyAkc3RtdCA9ICRteXNxbGktPnByZXBhcmUoIlwxMjNcMTA1XHg0Y1wxMDVcMTAzXDEyNFw0MFx4MmFcNDBceDQ2XDEyMlx4NGZceDRkXDQwXDE2M1x4NjVceDcyXDE2Nlx4NjVceDcyXDE2M1x4MjBcMTI3XDExMFx4NDVceDUyXHg0NVw0MFx4NzNcMTQ1XDE2Mlx4NzZcMTQ1XDE2MlwxNjNcNTZcMTUxXDE0NFw0MFx4M2RceDIwXDc3Iik7ICRzdG10LT5iaW5kX3BhcmFtKCJceDY5IiwgJHBJZCk7IGlmICghJHN0bXQtPmV4ZWN1dGUoKSkgeyByZXR1cm4gZmFsc2U7IH0gJHJlc3VsdCA9ICRzdG10LT5nZXRfcmVzdWx0KCk7IGlmICgkcmVzdWx0LT5udW1fcm93cyAhPT0gMSkgeyBhZGRFcnJvcigiXHg1M1wxNDVcMTYyXHg3Nlx4NjVcMTYyXDQwXHg2Ylx4NmZcMTU2XDE1Nlx4NzRcMTQ1XHgyMFwxNTZcMTUxXHg2M1wxNTBcMTY0XHgyMFwxNDdceDY1XHg2Nlx4NzVceDZlXHg2NFx4NjVcMTU2XDQwXHg3N1wxNDVcMTYyXDE0NFx4NjVceDZlXDQxIik7IHJldHVybiBmYWxzZTsgfSAkcmV0ID0gJHJlc3VsdC0+ZmV0Y2hfYXJyYXkoTVlTUUxJX0FTU09DKTsgJHN0bXQtPmNsb3NlKCk7IHJldHVybiAkcmV0OyB9IGdvdG8geFpJVXA7IFhCM2RGOiBmdW5jdGlvbiBkZWxldGVTZXJ2ZXIoJHBJZCkgeyBnbG9iYWwgJG15c3FsaTsgJHNlcnZlciA9IGdldFNlcnZlckhvc3QoJHBJZCk7IHNlbmRUb1NlcnZlcigkc2VydmVyWyJceDY4XDE1MVx4NjQiXSwgIlwxNjJcMTU1XHg2NFwxNTFcMTYyIiwgIlw0M1x4NDNcMTI1XHg1Mlx4NTJcMTA1XHg0ZVx4NTRcMTM3XHg0NFwxMTFceDUyXDQzXHgyZlwxNjNcMTQ1XDE2MlwxNjZceDY1XHg3Mlw1NyIgLiAkcElkIC4gIlx4MmYiLCAnJyk7ICRteXNxbGktPnF1ZXJ5KCJceDQ0XDEwNVx4NGNcMTA1XHg1NFx4NDVcNDBcMTA2XHg1Mlx4NGZcMTE1XHgyMFwxNDRcMTUyXHg3M1w0MFx4NTdceDQ4XDEwNVx4NTJceDQ1XHgyMFx4NzNcMTQ1XHg3Mlx4NzZcMTQ1XDE2MlwxNTFceDY0XDc1XHgyNyIgLiAkc2VydmVyWyJcMTYzXHg2OVwxNDQiXSAuICJceDI3Iik7ICRteXNxbGktPnF1ZXJ5KCJceDQ0XHg0NVx4NGNcMTA1XDEyNFwxMDVcNDBcMTA2XDEyMlx4NGZcMTE1XDQwXDE0NVwxNTZcMTQ0XDE2MFx4NmZceDY5XDE1Nlx4NzRceDczXHgyMFwxMjdceDQ4XHg0NVwxMjJcMTA1XHgyMFx4NzNcMTQ1XDE2MlwxNjZceDY1XDE2Mlx4NjlcMTQ0XHgzZFw0NyIgLiAkc2VydmVyWyJceDczXDE1MVx4NjQiXSAuICJcNDciKTsgJG15c3FsaS0+cXVlcnkoIlx4NDRcMTA1XHg0Y1wxMDVcMTI0XDEwNVw0MFx4NDZceDUyXHg0ZlwxMTVcNDBceDY1XDE2NlwxNDVceDZlXHg3NFwxNjNcNDBceDU3XHg0OFwxMDVceDUyXHg0NVx4MjBcMTYzXHg2NVx4NzJceDc2XHg2NVwxNjJceDY5XHg2NFx4M2RceDI3IiAuICRzZXJ2ZXJbIlx4NzNceDY5XHg2NCJdIC4gIlw0NyIpOyAkbXlzcWxpLT5xdWVyeSgiXHg0NFx4NDVceDRjXDEwNVx4NTRcMTA1XDQwXDEwNlwxMjJceDRmXHg0ZFx4MjBcMTYzXDE0NVx4NzJcMTY2XHg2NVwxNjJceDY3XHg3Mlx4NmZceDc1XHg3MFx4NzNcNDBceDU3XDExMFwxMDVcMTIyXDEwNVw0MFwxNjNcMTQ1XHg3Mlx4NzZcMTQ1XHg3Mlx4NjlceDY0XHgzZFx4MjciIC4gJHNlcnZlclsiXHg3M1wxNTFcMTQ0Il0gLiAiXHgyNyIpOyAkbXlzcWxpLT5xdWVyeSgiXHg0NFx4NDVcMTE0XHg0NVwxMjRcMTA1XHgyMFwxMDZceDUyXDExN1wxMTVceDIwXDE2M1wxNDVceDcyXHg3NlwxNDVcMTYyXHg3M1x4MjBceDU3XDExMFwxMDVceDUyXDEwNVw0MFx4NjlceDY0XHgzZFx4MjciIC4gJHNlcnZlclsiXHg3M1wxNTFceDY0Il0gLiAiXHgyNyIpOyByZXR1cm4gdHJ1ZTsgfSBnb3RvIHpubTE0OyBpU1ZNNjogZnVuY3Rpb24gZ2V0VG9vTXVjaFVzZXJzKCkgeyByZXR1cm4gZ2V0VXNlckNvdW50KCkgPiBnZXRNYXhVc2VyQ291bnQoKTsgfSBnb3RvIGhic0dPOyBQdFYwdTogZnVuY3Rpb24gZ2V0TWF4VXNlckNvdW50KCkgeyByZXR1cm4gMTsgfSBnb3RvIGVtd19FOyBZTEw3TzogZnVuY3Rpb24gc3RhcnRTZXJ2ZXIoJHBJZCkgeyBnbG9iYWwgJHNldHRpbmdzLCAkbXlzcWxpOyBpZiAoZ2V0VG9vTXVjaFNlcnZlcnMoKSkgeyBkaWUoIlx4NWFceDc1XDQwXHg3Nlx4NjlceDY1XHg2Y1wxNDVcNDBceDUzXHg2NVx4NzJcMTY2XHg2NVwxNjJceDIxIik7IH0gaWYgKGdldFRvb011Y2hVc2VycygpKSB7IGRpZSgiXDEzMlx4NzVceDIwXHg3Nlx4NjlceDY1XDE1NFwxNDVceDIwXHg1NVx4NzNceDY1XDE2Mlw0MSIpOyB9IGlmIChnZXRUb29NdWNoSG9zdHMoKSkgeyBkaWUoIlwxMzJceDc1XHgyMFwxNjZcMTUxXHg2NVx4NmNcMTQ1XHgyMFx4NDhceDZmXHg3M1wxNjRcMTYzXHgyMSIpOyB9IGlmICghaXNfbnVtZXJpYygkcElkKSkgeyBkaWUoIlx4NjlcMTQ0XDQwXHg2OVx4NzNceDc0XDQwXHg2YlwxNDVceDY5XDE1Nlx4NjVceDIwXHg1YVwxNDFceDY4XHg2YyIpOyB9ICRzZXJ2ZXIgPSBnZXRTZXJ2ZXJIb3N0KCRwSWQpOyAkcG9ydCA9ICRzZXJ2ZXJbIlx4NzBcMTU3XDE2Mlx4NzRceDYyXDE0MVx4NzNcMTQ1Il07ICRoaWQgPSAkc2VydmVyWyJceDY4XHg2OVx4NjQiXTsgJGlwID0gJHNlcnZlclsiXHg2OVx4NmVcMTY0XHg2NVwxNjJcMTU2XDE0MVx4NmNceDY5XHg3MCJdOyAkY29ubmVjdGlvbiA9IEBmc29ja29wZW4oJGlwLCAkcG9ydCwgJGVycm5vLCAkZXJyc3RyLCAxKTsgaWYgKCRjb25uZWN0aW9uKSB7IHN0b3BTZXJ2ZXIoJHBJZCk7IH0gJGNvbm5lY3Rpb24gPSBAZnNvY2tvcGVuKCRpcCwgJHBvcnQsICRlcnJubywgJGVycnN0ciwgMSk7IGlmICgkY29ubmVjdGlvbikgeyBhZGRFcnJvcigiXHg1M1wxNDVcMTYyXHg3NlwxNDVceDcyXDQwXDE1M1x4NmZceDZlXDE1Nlx4NzRceDY1XDQwXHg2ZVx4NjlcMTQzXDE1MFwxNjRcNDBcMTQyXDE0NVx4NjVcMTU2XDE0NFwxNDVceDc0XHgyMFx4NzdceDY1XDE2Mlx4NjRcMTQ1XHg2ZVw0MSIpOyByZXR1cm4gZmFsc2U7IH0gd3JpdGVDYWxlbmRhckZpbGUoJHBJZCk7ICRmaWxlbmFtZSA9ICJceDIzXHg0M1x4NTVcMTIyXHg1Mlx4NDVceDRlXDEyNFx4NWZcMTA0XDExMVwxMjJceDIzXDU3XDE2M1wxNDVcMTYyXDE2NlwxNDVceDcyXDU3IiAuICRwSWQgLiAiXHgyZlwxNDNcMTU3XHg2ZVx4NjZcNTdcMTYzXDE0M1wxMzdceDczXDE0NVx4NzJceDc2XHgyZVwxNDNceDZmXHg2ZVx4NjYiOyAkcmVzcG9uc2UgPSBzZW5kVG9TZXJ2ZXIoJGhpZCwgIlwxNjJceDY1XHg2MVx4NjRceDY2XHg2OVx4NmNceDY1IiwgJGZpbGVuYW1lLCAnJyk7IGlmICgkcmVzcG9uc2VbIlx4NzJcMTQ1XDE2M1wxNjVceDZjXDE2NCJdICE9IG51bGwgJiYgJHJlc3BvbnNlWyJceDcyXHg2NVwxNjNceDc1XHg2Y1wxNjQiXSAhPSAnJykgeyAkY29udGVudCA9ICRyZXNwb25zZVsiXDE2MlwxNDVceDczXHg3NVx4NmNcMTY0Il0gLiAiXHhhIjsgJHNjbnVtYmVyID0gMTsgd2hpbGUgKGdldF9zdHJpbmdfYmV0d2VlbigkY29udGVudCwgIlx4NzNceDc0XDE2Mlx4NjVceDYxXDE1NVx4NjlceDY0XDEzNyIgLiAkc2NudW1iZXIgLiAiXDc1IiwgIlwxMiIpICE9ICcnKSB7ICRzdHJlYW1pZCA9IGdldF9zdHJpbmdfYmV0d2VlbigkY29udGVudCwgIlwxNjNcMTY0XDE2MlwxNDVcMTQxXDE1NVwxNTFceDY0XDEzNyIgLiAkc2NudW1iZXIgLiAiXHgzZCIsICJcMTIiKTsgJGF1dGhoYXNoID0gZ2V0X3N0cmluZ19iZXR3ZWVuKCRjb250ZW50LCAiXHg3M1wxNjRceDcyXHg2NVx4NjFceDZkXDE0MVx4NzVcMTY0XDE1MFwxNTBcMTQxXDE2M1x4NjhcMTM3IiAuICRzY251bWJlciAuICJceDNkIiwgIlx4YSIpOyAkc3RtdCA9ICRteXNxbGktPnByZXBhcmUoIlwxMjVcMTIwXDEwNFx4NDFceDU0XHg0NVx4MjBcMTQ1XDE1NlwxNDRceDcwXDE1N1x4NjlcMTU2XDE2NFx4NzNcNDBcMTIzXHg0NVwxMjRceDIwXDE2M1wxNjRceDcyXDE0NVx4NjFcMTU1XHg2MVwxNjVcMTY0XHg2OFwxNTBceDYxXDE2M1wxNTBceDIwXDc1XHgyMFx4M2ZcNDBcMTI3XHg0OFwxMDVcMTIyXHg0NVx4MjBcMTYzXHg3NFwxNjJcMTQ1XHg2MVx4NmRceDY5XHg2NFx4MjBcNzVceDIwXHgzZlx4MjBcMTAxXHg0ZVwxMDRcNDBcMTYzXDE0NVwxNjJcMTY2XHg2NVwxNjJcMTUxXHg2NFx4MjBceDNkXDQwXHgzZlw3MyIpOyAkc3RtdC0+YmluZF9wYXJhbSgiXHg3M1wxNTFcMTUxIiwgJGF1dGhoYXNoLCAkc3RyZWFtaWQsICRwSWQpOyBpZiAoISRzdG10LT5leGVjdXRlKCkpIHsgYWRkRXJyb3IoIlx4NzNcMTY0XHg3Mlx4NjVceDYxXHg2ZFx4NjFcMTY1XHg3NFx4NjhcMTUwXHg2MVx4NzNcMTUwXHgyMFwxNDZceDYxXHg2OVwxNTRcMTQ1XDE0NFw0MSIpOyByZXR1cm4gZmFsc2U7IH0gaWYgKCRhdXRoaGFzaCAhPSAnJykgeyBhZGRJbmZvKCJcMTAxXDE2NVx4NzRcMTUwXDE1MFx4NjFcMTYzXDE1MFw0MCIgLiAkYXV0aGhhc2ggLiAiXHgyMFwxNDZceGMzXHg4M1x4YzJceGJjXDE2Mlw0MFx4NTNcMTY0XDE2MlwxNDVceDYxXHg2ZFwxMTFceDY0XDQwIiAuICRzdHJlYW1pZCAuICJceDIwXHg2N1wxNDVceDY2XDE2NVwxNTZceDY0XDE0NVwxNTZceDIwXHgyMSIpOyB9ICRzY251bWJlcisrOyB9IH0gJGluaV9jb250ZW50ID0gJyc7ICRjb25maWdmaWVsZHMgPSBhcnJheSgiXHg2ZFx4NjFcMTcwXHg3NVwxNjNcMTQ1XDE2MiIgPT4gIlwxNTVcMTQxXDE3MFwxNjVceDczXDE0NVx4NzIiLCAiXHg3MFx4NmZceDcyXDE2NFx4NjJceDYxXHg3M1wxNDUiID0+ICJceDcwXDE1N1x4NzJcMTY0XHg2Mlx4NjFcMTYzXHg2NSIsICJcMTYwXDE0MVwxNjNcMTYzXDE2N1wxNTdcMTYyXHg2NCIgPT4gIlx4NzBceDYxXDE2M1x4NzNceDc3XDE1N1wxNjJcMTQ0IiwgIlwxNjBceDYxXHg3M1wxNjNceDc3XHg2Zlx4NzJceDY0IiA9PiAiXHg3MFwxNDFceDczXDE2M1wxNjdceDZmXDE2Mlx4NjQiLCAiXDE0MVwxNDRceDZkXHg2OVwxNTZceDcwXHg2MVx4NzNcMTYzXHg3N1wxNTdcMTYyXHg2NCIgPT4gIlwxNDFcMTQ0XHg2ZFwxNTFceDZlXDE2MFwxNDFcMTYzXDE2M1x4NzdceDZmXDE2Mlx4NjQiLCAiXDE1NFx4NmZceDY3XDE0NlwxNTFcMTU0XHg2NSIgPT4gIlx4NmNcMTU3XHg2N1x4NjZceDY5XDE1NFx4NjUiLCAiXHg3M1wxNTBcMTU3XDE2N1wxNTRceDYxXDE2M1x4NzRcMTYzXDE1N1x4NmVceDY3XDE2MyIgPT4gIlx4NzNceDY4XHg2Zlx4NzdceDZjXHg2MVx4NzNcMTY0XDE2M1x4NmZceDZlXDE0N1x4NzMiLCAiXHg3N1x4MzNceDYzXHg2NVwxNTZcMTQxXDE0Mlx4NmNcMTQ1IiA9PiAiXHg3N1x4MzNceDYzXDE0NVx4NmVcMTQxXHg2Mlx4NmNcMTQ1IiwgIlx4NzdcNjNceDYzXDE1NFx4NmZceDY3IiA9PiAiXDE2N1w2M1wxNDNceDZjXHg2Zlx4NjciLCAiXHg2Mlx4NjFcMTU2XDE0Nlx4NjlcMTU0XHg2NSIgPT4gIlwxNDJceDYxXDE1Nlx4NjZcMTUxXDE1NFx4NjUiLCAiXDE2MlwxNTFceDcwXDE0Nlx4NjlcMTU0XDE0NSIgPT4gIlwxNjJceDY5XHg3MFwxNDZceDY5XHg2Y1x4NjUiLCAiXDE2NVwxNjZcMTU3XDE3MFx4MzJcMTYzXHg2Zlx4NzVcMTYyXHg2M1x4NjVceDY0XDE0NVx4NjJcMTY1XHg2NyIgPT4gIlwxNjVcMTY2XDE1N1x4NzhceDMyXDE2M1x4NmZcMTY1XDE2Mlx4NjNcMTQ1XDE0NFx4NjVcMTQyXDE2NVx4NjciLCAiXDE2M1wxNjJceDYzXDE1MVwxNjAiID0+ICJcMTYzXHg3Mlx4NjNcMTUxXDE2MCIsICJcMTQ0XHg2NVx4NzNceDc0XDE1MVx4NzAiID0+ICJcMTQ0XHg2NVx4NzNceDc0XDE1MVx4NzAiLCAiXHg3OVwxNjBceDZmXDE2MlwxNjQiID0+ICJcMTcxXDE2MFwxNTdcMTYyXHg3NCIsICJceDZlXHg2MVx4NmRcMTQ1XHg2Y1wxNTdceDZmXHg2YlwxNjVceDcwXDE2MyIgPT4gIlwxNTZcMTQxXHg2ZFx4NjVcMTU0XDE1N1wxNTdcMTUzXDE2NVx4NzBceDczIiwgIlx4NjFcMTY1XDE2NFx4NmZcMTQ0XHg3NVx4NmRcMTYwXDE2NVx4NzNceDY1XHg3Mlx4NzMiID0+ICJceDYxXDE2NVx4NzRceDZmXDE0NFx4NzVcMTU1XHg3MFwxNjVceDczXHg2NVwxNjJcMTYzIiwgIlwxNDFcMTY1XHg3NFwxNTdcMTQ0XDE2NVwxNTVceDcwXHg3M1wxNTdceDc1XDE2MlwxNDNcMTQ1XHg3NFx4NjlcMTU1XDE0NSIgPT4gIlx4NjFcMTY1XHg3NFx4NmZceDY0XHg3NVx4NmRcMTYwXHg3NFx4NjlcMTU1XHg2NSIsICJcMTYwXDE2NVwxNDJceDZjXDE1MVx4NjNceDczXDE0NVx4NzJceDc2XHg2NVwxNjIiID0+ICJceDcwXDE2NVwxNDJceDZjXDE1MVwxNDNcMTYzXDE0NVwxNjJceDc2XHg2NVwxNjIiLCAiXHg2MVwxNTRceDZjXHg2ZlwxNjdcMTYyXDE0NVwxNTRcMTQxXDE3MSIgPT4gIlx4NjFceDZjXDE1NFx4NmZcMTY3XHg3MlwxNDVcMTU0XDE0MVx4NzkiLCAiXDE0MVx4NmNcMTU0XHg2ZlwxNjdceDcwXHg3NVx4NjJcMTU0XDE1MVwxNDNcMTYyXHg2NVx4NmNceDYxXDE3MSIgPT4gIlwxNDFceDZjXHg2Y1x4NmZceDc3XDE2MFwxNjVceDYyXHg2Y1wxNTFceDYzXDE2MlwxNDVceDZjXHg2MVwxNzEiLCAiXDE1NVx4NjVceDc0XDE0MVwxNTFcMTU2XHg3NFwxNDVceDcyXHg3NlwxNDFceDZjIiA9PiAiXDE1NVx4NjVcMTY0XDE0MVx4NjlcMTU2XDE2NFx4NjVcMTYyXDE2Nlx4NjFcMTU0IiwgIlwxNDJcMTY1XDE0Nlx4NjZcMTQ1XDE2Mlx4NzRcMTcxXHg3MFx4NjUiID0+ICJceDYyXDE2NVwxNDZceDY2XDE0NVx4NzJcMTY0XHg3OVwxNjBcMTQ1IiwgIlx4NjJcMTY1XHg2NlwxNDZcMTQ1XHg3MlwxNTBceDYxXDE2Mlx4NjRcMTU0XHg2OVwxNTVceDY5XHg3NCIgPT4gIlwxNDJcMTY1XHg2NlwxNDZceDY1XDE2Mlx4NjhceDYxXDE2Mlx4NjRcMTU0XDE1MVwxNTVceDY5XHg3NCIsICJcMTQxXHg2NFwxNDFceDcwXHg3NFx4NjlceDc2XDE0NVx4NjJcMTY1XDE0NlwxNDZcMTQ1XDE2MlwxNjNcMTUxXDE3MlwxNDUiID0+ICJceDYxXHg2NFx4NjFcMTYwXHg3NFwxNTFceDc2XDE0NVwxNDJcMTY1XHg2NlwxNDZceDY1XHg3Mlx4NzNcMTUxXHg3YVwxNDUiLCAiXDE0Nlx4NjlcMTcwXDE0NVx4NjRcMTQyXDE2NVx4NjZceDY2XHg2NVx4NzJceDczXHg2OVx4N2FceDY1IiA9PiAiXHg2Nlx4NjlcMTcwXDE0NVwxNDRceDYyXHg3NVx4NjZcMTQ2XHg2NVwxNjJceDczXHg2OVwxNzJceDY1Iik7IGZvcmVhY2ggKCRzZXJ2ZXIgYXMgJGZpZWxkID0+ICR2YWx1ZSkgeyBpZiAoYXJyYXlfa2V5X2V4aXN0cygkZmllbGQsICRjb25maWdmaWVsZHMpKSB7ICRjb25maWdmaWVsZCA9ICRjb25maWdmaWVsZHNbJGZpZWxkXTsgJGluaV9jb250ZW50IC49ICRjb25maWdmaWVsZCAuICJcNzUiIC4gJHZhbHVlIC4gIlx4YSI7IH0gfSAkc2h2ZXJzaW9uID0gJHNlcnZlclsiXHg3M1x4NjhceDZmXDE2NVwxNjRcMTQzXHg2MVwxNjNcMTY0XHg1ZlwxNjZceDY1XHg3Mlx4NzNcMTUxXDE1N1wxNTYiXTsgJHJlbGF5dXJsID0gJHNlcnZlclsiXHg3MlwxNDVcMTU0XHg2MVwxNzFcMTYzXDE0NVwxNjJcMTY2XDE0NVwxNjIiXTsgaWYgKCFlbXB0eSgkc2VydmVyWyJcMTUxXDE1NlwxNjRceDcyXDE1N1wxNDZcMTUxXHg2Y1x4NjUiXSkpIHsgJGluaV9jb250ZW50IC49ICJcMTUxXHg2ZVwxNjRceDcyXHg2ZlwxNDZcMTUxXDE1NFwxNDVceDNkIiAuICRzZXJ2ZXJbIlx4NjlcMTU2XDE2NFwxNjJcMTU3XDE0NlwxNTFcMTU0XDE0NSJdIC4gIlx4YSI7IH0gJGluaV9jb250ZW50IC49ICJcMTYzXHg2M1wxNjJceDY1XDE0NVwxNTZcMTU0XDE1N1wxNDdcNzVcNjFcMTIiOyAkaW5pX2NvbnRlbnQgLj0gIlwxNTRcMTU3XHg2N1x4M2QiIC4gJHNldHRpbmdzWyJcMTU0XDE1N1wxNDdceDczIl0gLiAiXHhhIjsgaWYgKCRzaHZlcnNpb24gPT0gMikgeyAkaW5pX2NvbnRlbnQgLj0gIlwxNjNcMTY0XDE2Mlx4NjVcMTQxXDE1NVwxNjJcMTQ1XHg2Y1x4NjFceDc5XDE2NVwxNjJceDZjXHg1Zlx4MzFceDNkIiAuICRyZWxheXVybCAuICJcMTIiOyAkaW5pX2NvbnRlbnQgLj0gIlwxNzFceDcwXDYyXDc1XDYxXDEyIjsgJGluaV9jb250ZW50IC49ICJcMTcxXHg3MFwxNDFcMTQ0XHg2NFx4NzJceDNkXDE3MVx4NzBcNTZceDczXDE1MFx4NmZcMTY1XDE2NFx4NjNcMTQxXDE2M1wxNjRceDJlXHg2M1x4NmZceDZkXDEyIjsgJGluaV9jb250ZW50IC49ICJcMTcxXHg3MFwxNjBcMTU3XHg3MlwxNjRcNzVceDM4XHgzMFwxMiI7ICRpbmlfY29udGVudCAuPSAiXHg3OVwxNjBcMTYwXDE0MVx4NzRceDY4XHgzZFx4MmZceDc5XHg3MFw2MlwxMiI7IH0gJHNxbGNtZCA9ICJcMTIzXDEwNVx4NGNceDQ1XDEwM1wxMjRceDIwXDE2M1wxNjRcMTYyXDE0NVx4NjFcMTU1XHg2OVwxNDRcNTRcMTYzXDE2NFwxNjJcMTQ1XHg2MVx4NmRcMTQxXHg3NVwxNjRceDY4XDE1MFx4NjFceDczXHg2OFw0MFwxMDZceDUyXHg0ZlwxMTVcNDBceDY1XDE1Nlx4NjRceDcwXHg2ZlwxNTFcMTU2XHg3NFwxNjNceDIwXDEyN1x4NDhcMTA1XDEyMlx4NDVcNDBceDczXDE0NVx4NzJcMTY2XDE0NVx4NzJcMTUxXDE0NFw0MFx4M2RcNDBcNzdceDIwXHg0Zlx4NTJcMTA0XHg0NVwxMjJcNDBcMTAyXDEzMVw0MFx4NzNceDc0XDE2MlwxNDVcMTQxXDE1NVx4NjlcMTQ0IjsgaWYgKCRzaHZlcnNpb24gPT0gMSkgeyAkc3FsY21kIC49ICJcNDBceDRjXDExMVx4NGRcMTExXHg1NFx4MjBcNjFcNzMiOyB9ICRzdG10ID0gJG15c3FsaS0+cHJlcGFyZSgkc3FsY21kKTsgJHN0bXQtPmJpbmRfcGFyYW0oIlwxNTEiLCAkcElkKTsgaWYgKCEkc3RtdC0+ZXhlY3V0ZSgpKSB7IHJldHVybiBmYWxzZTsgfSAkcmVzdWx0ID0gJHN0bXQtPmdldF9yZXN1bHQoKTsgJGkgPSAxOyB3aGlsZSAoJGVkaXRzcWxyb3cgPSAkcmVzdWx0LT5mZXRjaF9hcnJheShNWVNRTElfQVNTT0MpKSB7ICRpbmlfY29udGVudCAuPSAiXDE2M1x4NzRceDcyXDE0NVwxNDFcMTU1XHg2MVx4NzVcMTY0XHg2OFwxNTBcMTQxXDE2M1wxNTBcMTM3IiAuICRpIC4gIlw3NSIgLiAkZWRpdHNxbHJvd1siXDE2M1wxNjRcMTYyXHg2NVwxNDFceDZkXDE0MVx4NzVceDc0XHg2OFx4NjhcMTQxXDE2M1wxNTAiXSAuICJcMTIiOyAkaW5pX2NvbnRlbnQgLj0gIlwxNjNcMTY0XDE2Mlx4NjVceDYxXHg2ZFwxNTFcMTQ0XDEzNyIgLiAkaSAuICJcNzUiIC4gJGVkaXRzcWxyb3dbIlx4NzNcMTY0XHg3MlwxNDVcMTQxXDE1NVx4NjlceDY0Il0gLiAiXHhhIjsgJGkrKzsgfSAkc3RtdC0+Y2xvc2UoKTsgJHJlc3BvbnNlID0gc2VuZFRvU2VydmVyKCRoaWQsICJcMTY3XDE2MlwxNTFceDc0XHg2NVx4NjZceDY5XDE1NFwxNDUiLCAkZmlsZW5hbWUsICRpbmlfY29udGVudCk7ICRwYXJhbSA9IGFycmF5KCk7ICRwYXJhbVsiXDE1MVwxNDQiXSA9ICRwSWQ7ICRwYXJhbVsiXHg3NlwxNDVcMTYyXHg3M1x4NjlceDZmXHg2ZSJdID0gJHNodmVyc2lvbjsgJHBhcmFtWyJcMTQzXDE1N1wxNTZceDY2XHg2OVwxNDdcMTQ2XHg2OVx4NmNcMTQ1Il0gPSAkZmlsZW5hbWU7ICRyZXNwb25zZSA9IHNlbmRUb1NlcnZlcigkaGlkLCAiXHg3M1wxNjRcMTQxXHg3Mlx4NzRcMTYzXHg2NVwxNjJcMTY2XHg2NVwxNjIiLCBzZXJpYWxpemUoJHBhcmFtKSwgJycpOyAkc3RtdCA9ICRteXNxbGktPnByZXBhcmUoIlx4NTVcMTIwXDEwNFwxMDFcMTI0XDEwNVw0MFx4NzNcMTQ1XDE2Mlx4NzZcMTQ1XDE2Mlx4NzNceDIwXHg1M1wxMDVceDU0XHgyMFx4NzNceDY1XHg3Mlx4NzZcMTQ1XDE2Mlx4NzNcMTY0XHg2MVx4NzRcMTY1XDE2M1w0MFx4M2RceDIwXDYxXDQwXHg1N1wxMTBceDQ1XHg1MlwxMDVcNDBcMTUxXHg2NFw0MFx4M2RceDIwXDc3Iik7ICRzdG10LT5iaW5kX3BhcmFtKCJcMTUxIiwgJHBJZCk7IGlmICghJHN0bXQtPmV4ZWN1dGUoKSkgeyByZXR1cm4gZmFsc2U7IH0gJHN0bXQtPmNsb3NlKCk7IGlmICgkc2VydmVyWyJceDczXDE2M1x4NmNcMTY0XHg3NVwxNTZcMTU2XDE0NVwxNTQiXSkgeyAkcmVzcG9uc2UgPSBzZW5kVG9TZXJ2ZXIoJGhpZCwgIlx4NjZceDY5XHg2Y1wxNDVcMTcwXDE1MVwxNjNceDc0XHg3MyIsICRzZXJ2ZXJbIlx4NzNcMTYzXDE1NFwxNjBcMTY1XHg2Mlx4NmNceDY5XHg2M1x4NmJceDY1XDE3MVx4NjZcMTUxXHg2Y1x4NjUiXSk7IGlmICghYm9vbHZhbCgkcmVzcG9uc2VbIlx4NzJcMTQ1XDE2M1x4NzVcMTU0XDE2NCJdKSkgeyBhZGRFcnJvcigiXDEyMFwxNjVcMTQyXHg2Y1x4NjlceDYzXHgyMFwxMTNceDY1XDE3MVwxNDZceDY5XHg2Y1x4NjVceDIwXDE0NVwxNzBcMTUxXHg3M1wxNjRceDY5XHg2NVx4NzJceDc0XHgyMFx4NmVcMTUxXDE0M1wxNTBcMTY0XDQwXDE1N1x4NjRcMTQ1XDE2Mlx4MjBceDdhXDE2NVw0MFx4NjdcMTQ1XDE2Mlx4NjlceDZlXDE0N1wxNDVceDIwXDEwMlx4NjVcMTYyXHg2NVx4NjNcMTUwXDE2NFwxNTFcMTQ3XDE2NVwxNTZcMTQ3XDE0NVx4NmVceDIwXDE2NVwxNTVceDIwXHg3YVwxNjVcMTcyXDE2NVwxNDdceDcyXDE0NVwxNTFceDY2XHg2NVx4NmUiKTsgfSAkcmVzcG9uc2UgPSBzZW5kVG9TZXJ2ZXIoJGhpZCwgIlwxNDZceDY5XDE1NFx4NjVcMTcwXDE1MVwxNjNceDc0XHg3MyIsICRzZXJ2ZXJbIlx4NzNceDczXHg2Y1x4NzBceDcyXHg2OVx4NzZceDYxXHg3NFx4NjVceDZiXHg2NVwxNzFcMTQ2XDE1MVx4NmNcMTQ1Il0pOyBpZiAoIWJvb2x2YWwoJHJlc3BvbnNlWyJcMTYyXDE0NVx4NzNcMTY1XDE1NFx4NzQiXSkpIHsgYWRkRXJyb3IoIlx4NTBcMTYyXHg2OVwxNjZceDYxXHg3NFwxNDVceDIwXHg0YlwxNDVceDc5XDE0NlwxNTFceDZjXHg2NVx4MjBceDY1XDE3MFwxNTFceDczXHg3NFx4NjlceDY1XDE2MlwxNjRceDIwXDE1NlwxNTFceDYzXDE1MFwxNjRcNDBceDZmXHg2NFx4NjVceDcyXDQwXHg3YVwxNjVceDIwXHg2N1x4NjVceDcyXDE1MVx4NmVcMTQ3XDE0NVw0MFx4NDJcMTQ1XHg3Mlx4NjVceDYzXHg2OFx4NzRceDY5XDE0N1x4NzVcMTU2XDE0N1wxNDVceDZlXDQwXDE2NVwxNTVceDIwXHg3YVwxNjVceDdhXDE2NVwxNDdcMTYyXDE0NVx4NjlceDY2XDE0NVwxNTYiKTsgfSAkc3R1bm5lbGZpbGVuYW1lID0gIlw0M1x4NDNcMTI1XHg1MlwxMjJceDQ1XHg0ZVwxMjRceDVmXHg0NFwxMTFceDUyXHgyM1w1N1wxNjNcMTQ1XDE2Mlx4NzZceDY1XDE2Mlx4MmYiIC4gJHBJZCAuICJcNTdcMTQzXDE1N1wxNTZcMTQ2XDU3XHg3M1wxNjRceDc1XHg2ZVx4NmVceDY1XHg2Y1x4MmVcMTQzXHg2ZlwxNTZceDY2IjsgJGNvbnRlbnQgPSAiXHg2Nlx4NmZcMTYyXDE0NVwxNDdcMTYyXDE1N1wxNjVceDZlXDE0NFx4MjBceDNkXDQwXDE3MVwxNDVcMTYzXHhhXDE2MFx4NjlceDY0XDQwXHgzZFw0MFwxMlwxMzNcMTYzXHg2OFx4NmZcMTY1XHg3NFwxNDNcMTQxXHg3M1x4NzRceDVkXHhhXDE0MVx4NjNcMTQzXHg2NVx4NzBceDc0XHgzZCIgLiAoaW50dmFsKCRzZXJ2ZXJbIlx4NzBceDZmXDE2Mlx4NzRcMTQyXDE0MVx4NzNcMTQ1Il0pICsgMikgLiAiXDEyXHg2M1wxNTdcMTU2XHg2ZVwxNDVceDYzXDE2NFw3NSIgLiAkc2VydmVyWyJceDcwXHg2Zlx4NzJceDc0XDE0Mlx4NjFceDczXHg2NSJdIC4gIlwxMlx4NjNceDY1XHg3Mlx4NzRceDIwXHgzZFx4MjAiIC4gJHNlcnZlclsiXDE2M1wxNjNcMTU0XDE2MFwxNjVcMTQyXHg2Y1wxNTFceDYzXHg2YlwxNDVcMTcxXDE0Nlx4NjlceDZjXHg2NSJdIC4gIlwxMlx4NmJceDY1XHg3OVw0MFx4M2RcNDAiIC4gJHNlcnZlclsiXDE2M1x4NzNceDZjXDE2MFwxNjJceDY5XHg3Nlx4NjFcMTY0XDE0NVx4NmJceDY1XHg3OVx4NjZcMTUxXHg2Y1x4NjUiXTsgJHJlc3BvbnNlID0gc2VuZFRvU2VydmVyKCRoaWQsICJceDc3XHg3MlwxNTFceDc0XDE0NVwxNDZcMTUxXHg2Y1wxNDUiLCAkc3R1bm5lbGZpbGVuYW1lLCAkY29udGVudCk7ICRyZXNwb25zZSA9IHNlbmRUb1NlcnZlcigkaGlkLCAiXDE2M1wxNjRcMTQxXDE2Mlx4NzRceDczXDE2NFwxNjVcMTU2XHg2ZVwxNDVcMTU0IiwgJHBJZCk7IH0gYWRkSW5mbygiXHg1M1x4NjVcMTYyXDE2NlwxNDVceDcyXHgyMFx4NzdcMTY1XHg3MlwxNDRceDY1XDQwXHg2N1wxNDVceDczXHg3NFx4NjFceDcyXHg3NFwxNDVceDc0Iik7IHJldHVybiB0cnVlOyB9IGdvdG8gZ05NVlg7IGhic0dPOiBmdW5jdGlvbiBnZXRUb29NdWNoSG9zdHMoKSB7IHJldHVybiBnZXRIb3N0Q291bnQoKSA+IDE7IH0gZ290byBKUmdkejsgSUh5TDE6IGZ1bmN0aW9uIEdldFJvbGVTdHIoJG51bWJlcikgeyBpZiAoJG51bWJlciA9PSAxKSB7IHJldHVybiAiXHg0NFwxNTIiOyB9IGlmICgkbnVtYmVyID09IDIpIHsgcmV0dXJuICJcMTI1XDE2M1wxNDVcMTYyIjsgfSBpZiAoJG51bWJlciA9PSAzKSB7IHJldHVybiAiXDEwMVwxNDRcMTU1XHg2OVwxNTYiOyB9IGlmICgkbnVtYmVyID09IDQpIHsgcmV0dXJuICJceDUzXHg3NVwxNjBceDY1XDE2Mlw0MFwxMDFceDY0XDE1NVwxNTFceDZlXDE1MVx4NzNcMTY0XDE2MlwxNDFceDc0XHg2Zlx4NzIiOyB9IHJldHVybiAiXDE0MlwxNDFceDZlXHg2ZVx4NjVceDY0IjsgfSBnb3RvIFZZOFNWOyBic2xUWDogZnVuY3Rpb24gSGFzUm9sZSgkdXNlciwgJG51bWJlcikgeyByZXR1cm4gR2V0Um9sZSgkdXNlcikgPT0gJG51bWJlcjsgfSBnb3RvIFJMTGd3OyBOY2pxNDogZnVuY3Rpb24gc3RhcnRBdXRvREooJHBJZCwgJHBQbGF5bGlzdCkgeyBnbG9iYWwgJG15c3FsaSwgJHNldHRpbmdzOyBpZiAoZ2V0VG9vTXVjaFNlcnZlcnMoKSkgeyBkaWUoIlwxMzJcMTY1XHgyMFwxNjZcMTUxXDE0NVwxNTRceDY1XDQwXDEyM1x4NjVcMTYyXHg3Nlx4NjVceDcyXHgyMSIpOyB9IGlmIChnZXRUb29NdWNoVXNlcnMoKSkgeyBkaWUoIlx4NWFcMTY1XDQwXDE2NlwxNTFceDY1XDE1NFwxNDVcNDBcMTI1XDE2M1x4NjVceDcyXDQxIik7IH0gaWYgKGdldFRvb011Y2hIb3N0cygpKSB7IGRpZSgiXHg1YVx4NzVcNDBceDc2XHg2OVx4NjVcMTU0XHg2NVw0MFwxMTBcMTU3XHg3M1wxNjRceDczXHgyMSIpOyB9IGlmIChlbXB0eSgkcFBsYXlsaXN0KSkgeyBhZGRFcnJvcigiXDEyMFx4NmNceDYxXDE3MVwxNTRcMTUxXHg3M1wxNjRceDIwXDE1MVwxNjNcMTY0XHgyMFwxNTRcMTQ1XDE0NVx4NzJceDIxIik7IHJldHVybiBmYWxzZTsgfSAkc2VydmVyID0gZ2V0U2VydmVySG9zdCgkcElkKTsgJHBvcnQgPSAkc2VydmVyWyJceDcwXHg2Zlx4NzJceDc0XDE0MlwxNDFceDczXHg2NSJdOyAkaGlkID0gJHNlcnZlclsiXHg2OFx4NmZcMTYzXDE2NFwxNTFceDY0Il07IHN0b3BBdXRvREooJHBJZCk7IHdyaXRlQ2FsZW5kYXJGaWxlKCRwSWQpOyAkcGxheWxpc3RkaXIgPSAiXDQzXDEwM1x4NTVceDUyXHg1MlwxMDVcMTE2XDEyNFwxMzdceDQ0XDExMVwxMjJcNDNcNTdcMTYzXHg2NVx4NzJcMTY2XHg2NVwxNjJceDJmIiAuICRwSWQgLiAiXHgyZlx4NzBceDZjXDE0MVwxNzFcMTU0XDE1MVx4NzNcMTY0XHgyZiI7ICRpbmlfY29udGVudCA9ICJcMTYwXDE1NFwxNDFcMTcxXDE1NFwxNTFcMTYzXDE2NFwxNDZceDY5XDE1NFwxNDVcNzUiIC4gJHBsYXlsaXN0ZGlyIC4gc3RyaXBfdGFncyhzdHJfcmVwbGFjZSgiXDU3IiwgJycsICRwUGxheWxpc3QpKSAuICJcMTIiOyAkcmVzcG9uc2UgPSBzZW5kVG9TZXJ2ZXIoJGhpZCwgIlx4NzJcMTQ1XHg2MVx4NjRcMTQ0XDE1MVwxNjIiLCAkcGxheWxpc3RkaXIpOyAkZmlsZXMgPSB1bnNlcmlhbGl6ZSgkcmVzcG9uc2VbIlx4NzJceDY1XDE2M1x4NzVcMTU0XHg3NCJdKTsgJGkgPSAxOyBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsgJGluaV9jb250ZW50IC49ICJcMTYwXDE1NFwxNDFceDc5XDE1NFwxNTFceDczXHg3NFx4NjZcMTUxXDE1NFx4NjVcMTYwXDE0MVwxNjRcMTUwXHg1ZiIgLiAkaSAuICJcNzUiIC4gJHBsYXlsaXN0ZGlyIC4gJGZpbGUgLiAiXHhhIjsgJGluaV9jb250ZW50IC49ICJcMTYwXHg2Y1wxNDFcMTcxXDE1NFx4NjlceDczXDE2NFx4NjZceDY5XHg2Y1x4NjVcMTU2XDE0MVx4NmRcMTQ1XDEzNyIgLiAkaSAuICJceDNkIiAuICRmaWxlIC4gIlx4YSI7ICRpKys7IH0gJGluaV9jb250ZW50IC49ICJcMTYzXHg3NFwxNjJcMTQ1XHg2MVx4NmRcMTY1XHg3MlwxNTRcNzVceDY4XHg3NFx4NzRcMTYwXHgzYVw1N1w1NyIgLiAkc2VydmVyWyJceDY5XDE2MCJdIC4gIlx4M2EiIC4gJHBvcnQgLiAiXHhhIjsgJGNvbmZpZ2ZpZWxkcyA9IGFycmF5KCJceDYxXHg3MFwxNTFceDYxXDE0NFx4NmRceDY5XHg2ZVx4NzBcMTQxXDE2M1x4NzNcMTY3XHg2Zlx4NzJcMTQ0IiA9PiAiXDE0MVx4NjRceDZkXHg2OVwxNTZcMTYwXHg2MVwxNjNceDczXHg3N1x4NmZceDcyXHg2NCIsICJceDYxXDE2MFwxNTFceDYxXDE0NFx4NmRcMTUxXDE1NlwxNjBcMTU3XDE2Mlx4NzQiID0+ICJceDYxXHg2NFx4NmRcMTUxXHg2ZVwxNjBceDZmXDE2Mlx4NzQiLCAiXDE0MVwxNjBceDY5XDE0MVx4NjRceDZkXDE1MVwxNTZcMTY1XDE2M1wxNDVcMTYyIiA9PiAiXHg2MVx4NjRceDZkXHg2OVwxNTZcMTY1XHg3M1x4NjVcMTYyIiwgIlwxNjBceDYxXDE2M1wxNjNceDc3XHg2ZlwxNjJcMTQ0IiA9PiAiXDE2MFwxNDFceDczXDE2M1wxNjdcMTU3XDE2MlwxNDQiLCAiXHg3M1x4NjVcMTYyXDE2NlwxNDVceDcyXHg2OVwxNjAiID0+ICJceDczXDE0NVwxNjJcMTY2XHg2NVwxNjJceDY5XHg3MCIsICJcMTYwXDE1N1x4NzJcMTY0XHg2MlwxNDFceDczXDE0NSIgPT4gIlwxNjNceDY1XHg3Mlx4NzZceDY1XDE2MlwxNjBcMTU3XHg3Mlx4NzQiLCAiXDE2M1x4NjhceDc1XDE0NlwxNDZcMTU0XDE0NSIgPT4gIlwxNjNceDY4XHg3NVx4NjZceDY2XHg2Y1wxNDUiLCAiXDE0N1x4NjVcMTU2XHg3MlwxNDUiID0+ICJcMTQ3XHg2NVwxNTZcMTYyXDE0NSIsICJceDcwXDE2NVwxNDJceDZjXDE1MVwxNDMiID0+ICJcMTYwXDE2NVx4NjJcMTU0XHg2OVwxNDMiLCAiXDE0M1wxNDFceDZjXHg2NVx4NmVceDY0XHg2MVx4NzJcMTYyXHg2NVx4NzdceDcyXHg2OVx4NzRcMTQ1IiA9PiAiXHg2M1wxNDFcMTU0XHg2NVx4NmVceDY0XHg2MVx4NzJcMTYyXDE0NVx4NzdceDcyXHg2OVwxNjRcMTQ1IiwgIlwxNDNceDYxXDE1NFwxNDVceDZlXHg2NFx4NjFcMTYyXHg2NlwxNTFceDZjXHg2NSIgPT4gIlx4NjNceDYxXDE1NFx4NjVcMTU2XHg2NFx4NjFceDcyXHg2Nlx4NjlcMTU0XHg2NSIsICJcMTY1XHg3M1wxNDVcMTE1XHg2NVwxNjRceDYxXDE0NFx4NjFcMTY0XDE0MSIgPT4gIlx4NzVceDczXDE0NVx4NGRcMTQ1XDE2NFx4NjFcMTQ0XHg2MVwxNjRceDYxIiwgIlwxNzBceDY2XDE0MVwxNDRceDY1IiA9PiAiXHg3OFwxNDZceDYxXHg2NFx4NjUiLCAiXDE3MFwxNDZceDYxXHg2NFwxNDVceDc0XDE1MFx4NzJcMTQ1XDE2M1x4NjhcMTU3XDE1NCIgPT4gIlwxNzBceDY2XHg2MVx4NjRceDY1XDE2NFwxNTBcMTYyXHg2NVwxNjNcMTUwXDE1N1wxNTRcMTQ0IiwgIlwxNDNceDYxXDE2MFwxNjRceDc1XHg3Mlx4NjUiID0+ICJceDYzXHg2MVx4NzBcMTY0XHg3NVwxNjJcMTQ1IiwgIlwxNDRcMTUyXHg3MFwxNTdceDcyXHg3NFwxMzdcNjEiID0+ICJceDY0XDE1Mlx4NzBcMTU3XDE2MlwxNjRcMTM3XDYxIiwgIlwxNDRceDZhXDE0MlwxNjJcMTU3XHg2MVwxNDRceDYzXHg2MVwxNjNceDc0XDE2MyIgPT4gIlwxNDRceDZhXDE0MlwxNjJceDZmXHg2MVwxNDRcMTQzXHg2MVwxNjNcMTY0XHg3MyIsICJcMTY1XDE1NlwxNTRceDZmXDE0M1x4NmJceDZiXHg2NVx4NzlceDZlXDE0MVwxNTVcMTQ1IiA9PiAiXHg3NVwxNTZceDZjXHg2ZlwxNDNceDZiXDE1M1x4NjVceDc5XHg2ZVx4NjFcMTU1XDE0NSIsICJcMTY1XDE1NlwxNTRceDZmXDE0M1wxNTNceDZiXHg2NVx4NzlceDYzXDE1N1wxNDRceDY1IiA9PiAiXHg3NVwxNTZceDZjXDE1N1x4NjNceDZiXHg2Ylx4NjVcMTcxXHg2M1x4NmZcMTQ0XDE0NSIsICJceDczXHg3NFx4NzJcMTQ1XHg2MVwxNTVcMTY0XHg2OVx4NzRceDZjXDE0NSIgPT4gIlwxNjNceDc0XHg3MlwxNDVcMTQxXHg2ZFx4NzRcMTUxXHg3NFwxNTRceDY1IiwgIlwxNjNceDc0XDE2Mlx4NjVceDYxXHg2ZFwxNjVcMTYyXDE1NCIgPT4gIlx4NzNceDc0XDE2Mlx4NjVceDYxXHg2ZFx4NzVceDcyXHg2YyIpOyBmb3JlYWNoICgkc2VydmVyIGFzICRmaWVsZCA9PiAkdmFsdWUpIHsgaWYgKGFycmF5X2tleV9leGlzdHMoJGZpZWxkLCAkY29uZmlnZmllbGRzKSkgeyAkY29uZmlnZmllbGQgPSAkY29uZmlnZmllbGRzWyRmaWVsZF07ICRpbmlfY29udGVudCAuPSAkY29uZmlnZmllbGQgLiAiXHgzZCIgLiAkdmFsdWUgLiAiXDEyIjsgfSB9ICRzdG10ID0gJG15c3FsaS0+cHJlcGFyZSgiXHg1M1wxMDVcMTE0XDEwNVx4NDNceDU0XDQwXDUyXDQwXHg0Nlx4NTJceDRmXHg0ZFw0MFwxNDRcMTUyXDE2M1x4MjBcMTI3XHg0OFx4NDVceDUyXHg0NVx4MjBceDczXHg2NVwxNjJcMTY2XHg2NVx4NzJcMTUxXDE0NFx4MjBcNzVceDIwXHgzZlx4MjBceDQxXHg0ZVx4NDRcNDBceDYzXDE0MVx4NmVcMTYzXHg3NFx4NzJceDY1XDE0MVwxNTVceDNkXHgyN1w2MVw0NyIpOyAkc3RtdC0+YmluZF9wYXJhbSgiXDE1MSIsICRwSWQpOyBpZiAoISRzdG10LT5leGVjdXRlKCkpIHsgcmV0dXJuIGZhbHNlOyB9ICRyZXN1bHQgPSAkc3RtdC0+Z2V0X3Jlc3VsdCgpOyAkaSA9IDE7IHdoaWxlICgkZWRpdHNxbHJvdyA9ICRyZXN1bHQtPmZldGNoX2FycmF5KE1ZU1FMSV9BU1NPQykpIHsgJGluaV9jb250ZW50IC49ICJcMTQ0XDE1MlwxNTRceDZmXHg2N1x4NjlcMTU2XHg1ZiIgLiAkaSAuICJceDNkIiAuICRlZGl0c3Fscm93WyJceDZjXHg2Zlx4NjdcMTUxXHg2ZSJdIC4gIlwxMiI7ICRpbmlfY29udGVudCAuPSAiXDE0NFwxNTJceDcwXHg2MVwxNjNcMTYzXDE2N1x4NmZcMTYyXHg2NFwxMzciIC4gJGkgLiAiXHgzZCIgLiAkZWRpdHNxbHJvd1siXDE2MFwxNDFcMTYzXDE2M1x4NzdceDZmXDE2Mlx4NjQiXSAuICJceGEiOyAkaW5pX2NvbnRlbnQgLj0gIlx4NjRceDZhXDE2MFwxNjJcMTUxXDE1N1x4NzJcMTUxXHg3NFx4NzlcMTM3IiAuICRpIC4gIlx4M2QiIC4gJGVkaXRzcWxyb3dbIlx4NzBceDcyXHg2OVwxNTdceDcyXHg2OVx4NzRceDc5Il0gLiAiXHhhIjsgJGkrKzsgfSAkc3RtdC0+Y2xvc2UoKTsgJHNlcnZlciA9IGdldFNlcnZlckhvc3QoJHBJZCk7ICRzaHZlcnNpb24gPSAkc2VydmVyWyJceDczXHg2OFx4NmZceDc1XHg3NFx4NjNceDYxXDE2M1x4NzRceDVmXDE2NlwxNDVceDcyXHg3M1x4NjlceDZmXHg2ZSJdOyAkcXVlcnkgPSAiXHg1M1wxMDVcMTE0XDEwNVwxMDNcMTI0XDQwXHgyYVx4MjBceDQ2XHg1Mlx4NGZcMTE1XDQwXDE0NVwxNTZcMTQ0XHg3MFx4NmZcMTUxXHg2ZVx4NzRcMTYzXHgyMFx4NTdceDQ4XHg0NVwxMjJcMTA1XDQwXDE2M1x4NjVcMTYyXHg3Nlx4NjVcMTYyXDE1MVwxNDRcNDBcNzVceDIwXHgzZlw0MFx4NGZceDUyXHg0NFx4NDVcMTIyXDQwXHg0Mlx4NTlcNDBcMTQ1XHg2ZVwxNDRceDcwXHg2Zlx4NjlceDZlXHg3NFx4NzNcNTZceDY5XDE0NCI7IGlmICgkc2h2ZXJzaW9uID09IDEpIHsgJHF1ZXJ5IC49ICJceDIwXHg0Y1x4NDlcMTE1XHg0OVx4NTRceDIwXDYxIjsgfSAkc3RtdCA9ICRteXNxbGktPnByZXBhcmUoJHF1ZXJ5KTsgJHN0bXQtPmJpbmRfcGFyYW0oIlwxNTEiLCAkcElkKTsgaWYgKCEkc3RtdC0+ZXhlY3V0ZSgpKSB7IHJldHVybiBmYWxzZTsgfSAkcmVzdWx0ID0gJHN0bXQtPmdldF9yZXN1bHQoKTsgJGkgPSAxOyB3aGlsZSAoJGVkaXRzcWxyb3cgPSAkcmVzdWx0LT5mZXRjaF9hcnJheShNWVNRTElfQVNTT0MpKSB7ICRpbmlfY29udGVudCAuPSAiXDE0Mlx4NjlceDc0XDE2MlwxNDFcMTY0XHg2NVx4NWYiIC4gJGkgLiAiXDc1IiAuICRlZGl0c3Fscm93WyJcMTQyXHg2OVwxNjRceDcyXHg2MVwxNjRceDY1Il0gLiAiXDEyIjsgJGluaV9jb250ZW50IC49ICJceDczXHg2MVwxNTVceDcwXHg2Y1x4NjVcMTYyXDE0MVwxNjRcMTQ1XDEzNyIgLiAkaSAuICJceDNkIiAuICRlZGl0c3Fscm93WyJcMTYzXDE0MVx4NmRcMTYwXDE1NFx4NjVceDcyXHg2MVwxNjRcMTQ1Il0gLiAiXHhhIjsgJGluaV9jb250ZW50IC49ICJceDYzXDE1MFwxNDFcMTU2XDE1Nlx4NjVcMTU0XHg3M1x4NWYiIC4gJGkgLiAiXHgzZCIgLiAkZWRpdHNxbHJvd1siXHg2M1x4NjhceDYxXHg2ZVwxNTZcMTQ1XHg2Y1x4NzMiXSAuICJcMTIiOyAkaW5pX2NvbnRlbnQgLj0gIlx4NjVceDZlXDE0M1x4NmZceDY0XDE0NVx4NzJceDVmIiAuICRpIC4gIlw3NSIgLiAkZWRpdHNxbHJvd1siXDE0NVx4NmVceDYzXDE1N1x4NjRceDY1XDE2MiJdIC4gIlx4YSI7ICRpbmlfY29udGVudCAuPSAiXDE0NVwxNTZcMTQ0XHg3MFx4NmZceDY5XDE1NlwxNjRcMTU2XDE0MVx4NmRcMTQ1XDEzNyIgLiAkaSAuICJceDNkIiAuICRlZGl0c3Fscm93WyJceDZlXDE0MVx4NmRceDY1Il0gLiAiXHhhIjsgJGluaV9jb250ZW50IC49ICJcMTU3XHg3NVwxNjRcMTYwXHg3MlwxNTdceDc0XDE1N1wxNDNceDZmXHg2Y1wxMzciIC4gJGkgLiAiXHgzZCIgLiAkZWRpdHNxbHJvd1siXHg2Zlx4NzVceDc0XHg3MFx4NzJcMTU3XHg3NFwxNTdceDYzXDE1N1x4NmMiXSAuICJceGEiOyAkaW5pX2NvbnRlbnQgLj0gIlwxNjNcMTY0XHg3Mlx4NjVcMTQxXDE1NVwxNTFceDY0XDEzNyIgLiAkaSAuICJcNzUiIC4gJGVkaXRzcWxyb3dbIlwxNjNcMTY0XDE2Mlx4NjVceDYxXHg2ZFx4NjlceDY0Il0gLiAiXDEyIjsgJGluaV9jb250ZW50IC49ICJcMTYzXHg2NVx4NzJceDc2XHg2NVwxNjJceDY5XDE2MFwxMzciIC4gJGkgLiAiXDc1IiAuICRzZXJ2ZXJbIlx4NzNcMTQ1XDE2MlwxNjZceDY1XDE2Mlx4NjlceDcwIl0gLiAiXDEyIjsgJGluaV9jb250ZW50IC49ICJceDczXDE0NVx4NzJceDc2XHg2NVwxNjJceDcwXDE1N1wxNjJcMTY0XHg1ZiIgLiAkaSAuICJcNzUiIC4gJHNlcnZlclsiXDE2MFwxNTdceDcyXDE2NFx4NjJcMTQxXDE2M1wxNDUiXSAuICJceGEiOyAkaW5pX2NvbnRlbnQgLj0gIlwxNjBceDYxXDE2M1wxNjNcMTY3XHg2ZlwxNjJceDY0XDEzNyIgLiAkaSAuICJcNzUiIC4gJHNlcnZlclsiXDE2MFwxNDFcMTYzXHg3M1x4NzdceDZmXHg3Mlx4NjQiXSAuICJceGEiOyAkaSsrOyB9ICRzdG10LT5jbG9zZSgpOyAkbG9nZmlsZSA9IHN0cl9yZXBsYWNlKCJceDJlXHg2Y1x4NmZcMTQ3IiwgIlx4MmVceDc0XHg3MlwxNDFceDZlXDE2M1x4MmVceDZjXDE1N1x4NjciLCAkc2VydmVyWyJcMTU0XDE1N1x4NjdceDY2XDE1MVwxNTRcMTQ1Il0pOyAkaW5pX2NvbnRlbnQgLj0gIlx4NmNceDZmXHg2N1x4NjZceDY5XHg2Y1x4NjVceDNkIiAuICRsb2dmaWxlIC4gIlx4YSI7ICRpbmlfY29udGVudCAuPSAiXDE2M1x4NjNceDcyXDE0NVwxNDVcMTU2XHg2Y1wxNTdceDY3XDc1XHgzMVwxMiI7ICRpbmlfY29udGVudCAuPSAiXDE1NFwxNTdceDY3XDc1IiAuICRzZXR0aW5nc1siXHg2Y1wxNTdceDY3XHg3MyJdIC4gIlwxMiI7ICRmaWxlbmFtZSA9ICJceDIzXHg0M1x4NTVceDUyXDEyMlx4NDVcMTE2XHg1NFwxMzdcMTA0XDExMVx4NTJceDIzXDU3XDE2M1x4NjVceDcyXDE2NlwxNDVceDcyXHgyZiIgLiAkcElkIC4gIlw1N1wxNDNcMTU3XHg2ZVx4NjZcNTdceDczXDE0M1x4NWZceDc0XHg3MlwxNDFcMTU2XHg3M1w1Nlx4NjNceDZmXHg2ZVx4NjYiOyAkcmVzcG9uc2UgPSBzZW5kVG9TZXJ2ZXIoJGhpZCwgIlwxNjdceDcyXDE1MVx4NzRceDY1XDE0NlwxNTFcMTU0XHg2NSIsICRmaWxlbmFtZSwgJGluaV9jb250ZW50KTsgJHBhcmFtID0gYXJyYXkoKTsgJHBhcmFtWyJcMTUxXHg2NCJdID0gJHBJZDsgJHBhcmFtWyJcMTY2XHg2NVwxNjJcMTYzXHg2OVx4NmZcMTU2Il0gPSAkc2h2ZXJzaW9uOyAkcGFyYW1bIlx4NjNceDZmXHg2ZVx4NjZceDY5XDE0N1wxNDZceDY5XHg2Y1wxNDUiXSA9ICRmaWxlbmFtZTsgJHJlc3BvbnNlID0gc2VuZFRvU2VydmVyKCRoaWQsICJcMTYzXHg3NFx4NjFcMTYyXHg3NFx4NjFcMTY1XDE2NFwxNTdceDY0XHg2YSIsIHNlcmlhbGl6ZSgkcGFyYW0pLCAnJyk7ICRzdG10ID0gJG15c3FsaS0+cHJlcGFyZSgiXDEyNVwxMjBceDQ0XDEwMVx4NTRcMTA1XDQwXDE2M1x4NjVceDcyXDE2NlwxNDVcMTYyXHg3M1w0MFwxMjNceDQ1XDEyNFx4MjBceDYxXHg3NVx4NzRceDZmXHg2NFx4NmFceDczXDE2NFx4NjFcMTY0XDE2NVwxNjNcNDBcNzVcNDBceDMxXDU0XHgyMFwxNTRceDYxXDE2M1wxNjRcMTIwXHg2Y1wxNDFcMTcxXDE1NFx4NjlceDczXDE2NFw0MFx4M2RceDIwXHgzZlx4MjBceDU3XHg0OFx4NDVceDUyXDEwNVx4MjBceDY5XDE0NFw0MFw3NVx4MjBceDNmIik7ICRzdG10LT5iaW5kX3BhcmFtKCJcMTYzXHg2OSIsICRwUGxheWxpc3QsICRwSWQpOyBpZiAoISRzdG10LT5leGVjdXRlKCkpIHsgcmV0dXJuIGZhbHNlOyB9IHJldHVybiB0cnVlOyB9IGdvdG8gQzZVNkQ7IG0wcjFIOiA=')); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 3b9d20d535a096ffc3d1ba2d02208f89
Eval Count 1
Decode Time 107 ms