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('CiBuYW1lc3BhY2UgTGV2ZWxVUDsgdXNlIHBvY2tldG1pbmVcZXZlbnRccGxheWVy..
Decoded Output download
namespace LevelUP; use pocketmine\event\player\PlayerDeathEvent; use pocketmine\event\entity\EntityDeathEvent; use pocketmine\utils\Config; use pocketmine\utils\TextFormat; use pocketmine\event\Listener; use pocketmine\command\ConsoleCommandSender; use pocketmine\Player; use pocketmine\plugin\PluginBase; use pocketmine\Server; use pocketmine\event\block\BlockBreakEvent; use pocketmine\event\block\BlockPlaceEvent; use pocketmine\utils\TextFormat as C; use pocketmine\command\Command; use pocketmine\command\CommandSender; use pocketmine\level\Position; use pocketmine\event\player\PlayerJoinEvent; use pocketmine\event\entity\EntityDamageByEntityEvent; class Main extends PluginBase implements Listener { private $mysql; public function onEnable() { $this->saveDefaultConfig(); $this->getLogger()->info("\x53\145\162\166\x65\162\x4c\x65\x76\x65\154\163\x20\x62\x79\x20\116\145\143\x6b\151\x74\164\x61\x20\156\157\x77\x20\145\156\x61\x62\x6c\x65\x64\41"); $this->getLogger()->info("\x20\137\40\x20\x20\137\x20\x20\x20\40\40\40\40\40\40\x20\40\40\x20\40\40\40\x20\x5f\40\x20\x20\x20\x20\40\x5f\40\40\40\x5f\40\40\x20\40\x20\137\xa" . "\174\x20\x5c\40\x7c\x20\x7c\40\40\x20\137\x5f\x5f\40\x20\40\x20\x5f\137\x5f\40\40\x7c\40\x7c\x20\137\137\x20\50\137\x29\40\x7c\40\x7c\137\x20\40\x7c\x20\x7c\x5f\40\40\40\40\137\x5f\40\137\x20\12" . "\174\x20\x20\134\174\40\x7c\x20\40\x2f\x20\137\x20\134\x20\x20\x2f\40\137\137\174\x20\174\x20\x7c\57\x20\x2f\40\x7c\40\174\40\x7c\x20\137\x5f\x7c\x20\174\40\x5f\x5f\174\x20\40\x2f\40\x5f\140\40\x7c\12" . "\x7c\40\x7c\x5c\40\x20\x7c\40\174\x20\40\137\137\x2f\40\174\x20\x28\137\137\x20\40\x7c\x20\40\40\74\40\40\x7c\x20\174\x20\x7c\x20\x7c\137\x20\40\174\x20\174\x5f\x20\40\x7c\40\50\x5f\x7c\x20\x7c\12" . "\x7c\x5f\174\x20\x5c\x5f\x7c\40\40\134\x5f\137\x5f\174\x20\x20\x5c\x5f\x5f\x5f\x7c\40\x7c\x5f\174\134\x5f\x5c\x20\x7c\x5f\x7c\x20\40\134\x5f\x5f\x7c\40\x20\x5c\x5f\x5f\174\40\x20\x5c\137\x5f\54\x5f\x7c\xa" . "\x20\137\x5f\137\40\x20\x20\x20\x20\x20\x20\x20\40\40\x20\40\x5f\137\x5f\x5f\x20\x20\x20\40\40\40\x5f\40\x20\40\x20\40\137\137\x20\40\40\137\137\12" . "\174\137\x20\137\174\x20\x20\137\137\137\40\40\40\x20\40\57\x20\137\137\137\x7c\40\x20\x20\x20\x2f\x20\x5c\x20\x20\x20\40\x5c\40\134\40\x2f\x20\57\12" . "\40\174\x20\x7c\40\40\57\40\x5f\137\x7c\40\40\x20\x7c\40\174\x20\40\x5f\x20\40\40\40\x2f\40\137\40\x5c\40\40\40\40\134\40\x56\40\x2f\xa" . "\x20\x7c\x20\174\40\x20\x5c\x5f\137\x20\x5c\40\40\40\174\40\174\x5f\174\40\x7c\x20\x20\x2f\40\137\137\x5f\40\134\x20\x20\x20\40\174\40\x7c\xa" . "\174\x5f\x5f\137\174\x20\x7c\137\x5f\x5f\x2f\x20\x20\x20\40\134\137\x5f\137\x5f\174\x20\57\137\57\x20\x20\x20\x5c\x5f\x5c\x20\x20\40\174\137\174\xa"); $this->stats = new Config($this->getDataFolder() . "\163\x74\x61\x74\x73\56\171\x6d\x6c", Config::YAML, array()); if (!is_dir($this->getDataFolder())) { mkdir($this->getDataFolder()); } $this->getServer()->getPluginManager()->registerEvents($this, $this); $mysql = new \mysqli($this->getConfig()->get("\150\157\x73\x74"), $this->getConfig()->get("\x75\x73\x65\x72\x6e\x61\155\x65"), $this->getConfig()->get("\160\x61\x73\x73\167\x6f\x72\x64")); if ($mysql->connect_errno) { $this->getLogger()->warn("\103\x6f\x6e\x6e\x65\x63\164\x20\146\141\x69\154\x65\144\72\x20\12", $mysqli->connect_error); $this->getServer()->shutDown(); return; } $mysql->query("\x43\x52\x45\101\x54\105\x20\124\x41\x42\x4c\x45\40" . $this->getConfig()->get("\164\x61\x62\x6c\x65") . "\x20\x49\106\x20\116\x4f\x54\40\105\x58\111\x53\x54\40\x28\12" . "\x75\163\x65\x72\x6e\x61\155\145\x20\x76\141\x72\143\x68\x61\162\50\x32\65\65\51\x20\120\122\x49\x4d\101\122\131\40\113\105\131\x2c\xa" . "\154\x65\x76\145\154\x20\151\x6e\164\54\xa" . "\x65\x78\160\x20\151\156\164\12" . "\x29\73"); $mysql->close(); $this->mysql = new mysqli($this->getConfig()->get("\150\x6f\163\x74"), $this->getConfig()->get("\165\x73\145\162\156\141\155\x65"), $this->getConfig()->get("\160\x61\163\x73\167\157\162\144"), $this->getConfig()->get("\x74\141\142\154\x65")); if ($mysql->connect_errno) { $this->getLogger()->warn("\x43\157\156\x6e\x65\143\x74\40\x66\x61\151\154\x65\x64\72\x20\12", $mysqli->connect_error); $this->getServer()->shutDown(); return; } } public function onDisable() { $this->mysql->close(); } public function onCommand(CommandSender $sender, Command $command, $label, array $args) : bool { switch (strtolower($command->getName())) { case "\163\x74\141\164\x75\163": $sender->sendMessage(C::ITALIC . C::YELLOW . "\x2d\x2d\x2d\55\x3d\x3d\x2d\55\55\x2d\x2d\40" . C::GOLD . "\x59\x6f\x75\162\x20\x53\x74\x61\164\165\x73\72\x20" . C::YELLOW . "\55\x2d\55\x3d\x3d\x2d\55\x2d\x2d\x2d\x2d"); $sender->sendMessage(C::GOLD . "\114\x65\x76\145\154\72\40" . $this->getLevel($sender) . "\40"); $sender->sendMessage(C::GOLD . "\x45\x78\160\145\x72\x69\x65\x6e\x63\x65\x3a\x20" . $this->getExp($sender) . "\x2f" . $this->getExpNeededTLU($sender) . "\40"); $sender->sendMessage(C::GOLD . "\113\151\154\154\163\x3a\40" . $this->getKills($sender) . "\40"); $sender->sendMessage(C::GOLD . "\x44\x65\x61\x74\150\163\x3a\40" . $this->getDeaths($sender) . "\x20"); $sender->sendMessage(C::ITALIC . C::YELLOW . "\55\x2d\x2d\55\x2d\55\x2d\55\x2d\55\55\55\x2d\55\75\75\75\x3d\75\55\55\x2d\55\55\55\x2d\55\x2d\55\55\x2d\55\x2d"); break; case "\165\160\147\x72\x61\144\x65": $this->initializeLevel($sender); break; case "\x67\x69\x76\145\145\170\x70": if (isset($args[0]) && isset($args[1]) && is_numeric($args[1])) { $this->addExp($args[0], $args[1]); return true; break; } case "\x72\x65\x64\165\x63\x65\145\170\x70": if (isset($args[0]) && is_numeric($args[0]) && isset($args[1])) { $this->reduceExp($args[0], $args[1]); return true; } break; case "\162\145\154\157\141\x64\115\x79\163\x71\154": foreach ($this->stats->getAll() as $playerName => $data) { $sql = "\111\x4e\123\x45\x52\124\40\x49\116\x54\x4f\x20" . $this->getConfig()->get("\x74\141\x62\x6c\145") . "\x20\50\x75\x73\x65\x72\x6e\x61\155\145\54\x20\154\145\x76\x65\x6c\54\x20\x65\170\x70\x29\x20\126\x41\x4c\x55\x45\123\x20\x28\47{$playerName}\x27\54\x20{$data["\x6c\166\x6c"]}\x2c\x20{$data["\145\x78\x70"]}\51"; $this->mysql->query($sql); } break; } return true; } public function updateMysqlData(Player $player) { $sql = "\125\x50\104\101\124\105\x20" . $this->getConfig()->get("\x74\141\142\154\x65") . "\40\123\x45\x54\x20\x6c\145\166\x65\154\75{$this->getLevel($player)}\x2c\x20\145\x78\x70\75{$this->getExp($player)}\x20\x57\110\x45\122\105\40\x75\163\145\x72\x6e\141\x6d\145\75\x27{$player->getName()}\47"; $this->mysql->query($sql); } public function initializeLevel($player) { $exp = $this->getExp($player); $expn = $this->getExpNeededTLU($player); if ($this->getLevel($player) == 100) { $player->sendMessage(C::ITALIC . C::RED . "\x59\x6f\x75\40\x68\x61\x76\145\x20\x61\x6c\x72\145\x61\x64\x79\40\162\145\x61\143\150\x65\144\40\x74\x68\x65\x20\155\141\x78\40\154\145\166\145\154\x2c\40\x73\x69\x6c\154\x79\41"); } if ($exp >= $expn) { $this->levelUp($player); $this->reduceExp($player, $expn); $this->setNamedTag($player); $this->addExpNeededTLU($player, $expn * 1); $player->sendMessage(C::YELLOW . "\x59\x6f\165\x20\154\145\x76\x65\x6c\x65\144\x20\165\x70\40\164\157\40" . $this->getLevel($player) . "\x21"); $player->addTitle(C::GOLD . "\x59\157\x75\40\114\x65\x76\145\x6c\40\125\160\x20\164\x6f\40" . $this->getLevel($player) . "\41"); } else { $player->sendMessage(C::RED . "\x59\x6f\165\40\x64\x6f\156\x27\164\x20\150\x61\x76\145\x20\x65\156\x6f\165\147\150\40\x65\170\160\x65\x72\x69\145\156\143\145\40\164\157\40\165\x70\x67\x72\x61\x64\145\x21"); } } public function levelUp($player) { $this->stats->setNested(strtolower($player->getName()) . "\56\x6c\x76\154", $this->stats->getAll()[strtolower($player->getName())]["\154\x76\x6c"] + 1); $this->stats->save(); $this->setNamedTag($player); $this->getServer()->broadcastMessage(C::GOLD . $player->getName() . "\40\150\141\x73\x20\x6c\x65\x76\x65\x6c\x20\x75\160\40\x74\x6f\40" . $this->getLevel($player) . "\x20\x4e\151\x63\145\x21\40"); $this->updateMysqlData($player); } public function setNamedTag($player) { $prefix = $this->getServer()->getPluginManager()->getPlugin("\120\x75\x72\145\x43\x68\x61\x74"); $prefix->setPrefix($this->getLevel($player), $player->getPlayer()); $player->sendMessage(C::RED . "\xe3\x80\213\127\x65\154\143\x6f\155\145\x20\124\157\40\x58\160\x6c\145\170\103\x72\x61\146\x74"); $player->save(); } public function reduceExp($player, $exp) { $this->stats->setNested(strtolower($player->getName()) . "\x2e\145\170\x70", $this->stats->getAll()[strtolower($player->getName())]["\145\x78\x70"] - $exp); $this->stats->save(); $this->updateMysqlData($player); } public function addPlayer($player) { $this->stats->setNested(strtolower($player->getName()) . "\56\154\166\154", "\61"); $this->stats->setNested(strtolower($player->getName()) . "\x2e\x65\x78\160", "\x30"); $this->stats->setNested(strtolower($player->getName()) . "\56\145\x78\x70\x6e\145\x65\144\x65\x64\164\154\x75", "\x32\65\x30"); $this->stats->setNested(strtolower($player->getName()) . "\56\x6b\151\x6c\154\x73", "\60"); $this->stats->setNested(strtolower($player->getName()) . "\56\144\145\141\x74\x68\163", "\60"); $this->stats->save(); $this->updateMysqlData($player); } public function addDeath($player) { $this->stats->setNested(strtolower($player->getName()) . "\56\144\145\141\164\x68\x73", $this->stats->getAll()[strtolower($player->getName())]["\144\145\141\164\x68\163"] + 1); $this->stats->save(); $this->updateMysqlData($player); } public function addKill($player) { $this->stats->setNested(strtolower($player->getName()) . "\56\153\x69\154\154\x73", $this->stats->getAll()[strtolower($player->getName())]["\153\x69\x6c\154\163"] + 1); $this->stats->save(); $this->updateMysqlData($player); } public function addExp($player, $exp) { $this->stats->setNested(strtolower($player) . "\x2e\x65\170\x70", $this->stats->getAll()[strtolower($player)]["\x65\170\x70"] + $exp); $this->stats->save(); $this->updateMysqlData($player); } public function addExpNeededTLU($player, $exp) { $this->stats->setNested(strtolower($player->getName()) . "\56\x65\170\x70\x6e\145\x65\144\145\x64\164\x6c\x75", $this->stats->getAll()[strtolower($player->getName())]["\x65\x78\x70\x6e\145\x65\144\145\144\x74\x6c\x75"] + $exp); $this->stats->save(); $this->updateMysqlData($player); } public function getDeaths($player) { return $this->stats->getAll()[strtolower($player->getName())]["\144\x65\x61\x74\150\163"]; } public function getKills($player) { return $this->stats->getAll()[strtolower($player->getName())]["\153\151\x6c\x6c\163"]; } public function getExp($player) { return $this->stats->getAll()[strtolower($player->getName())]["\x65\x78\x70"]; } public function getLevel($player) { return $this->stats->getAll()[strtolower($player->getName())]["\154\x76\x6c"]; } public function getExpNeededTLU($player) { return $this->stats->getAll()[strtolower($player->getName())]["\145\x78\160\x6e\145\x65\144\x65\144\164\x6c\165"]; } public function onJoin(PlayerJoinEvent $e) { $p = $e->getPlayer(); if (!$this->stats->exists(strtolower($p->getName()))) { $this->addPlayer($p); } $this->setNamedTag($p); } public function onKillDeath(PlayerDeathEvent $event) { $this->addDeath($event->getEntity()); if ($event->getEntity()->getLastDamageCause() instanceof EntityDamageByEntityEvent) { $killer = $event->getEntity()->getLastDamageCause()->getDamager(); if ($killer instanceof Player) { $this->addKill($killer); } } } public function addExpBreak(BlockBreakEvent $e) { $pn = $e->getPlayer()->getName(); $this->addExp($pn, 1); } public function addExpPlace(BlockPlaceEvent $e) { $pn = $e->getPlayer()->getName(); $this->addExp($pn, 1); } public function addExpOnKillDeath(PlayerDeathEvent $e) { $pn = $e->getPlayer()->getName(); $this->addExp($pn, 15); }
Did this file decode correctly?
Original Code
<?php eval(base64_decode('CiBuYW1lc3BhY2UgTGV2ZWxVUDsgdXNlIHBvY2tldG1pbmVcZXZlbnRccGxheWVyXFBsYXllckRlYXRoRXZlbnQ7IHVzZSBwb2NrZXRtaW5lXGV2ZW50XGVudGl0eVxFbnRpdHlEZWF0aEV2ZW50OyB1c2UgcG9ja2V0bWluZVx1dGlsc1xDb25maWc7IHVzZSBwb2NrZXRtaW5lXHV0aWxzXFRleHRGb3JtYXQ7IHVzZSBwb2NrZXRtaW5lXGV2ZW50XExpc3RlbmVyOyB1c2UgcG9ja2V0bWluZVxjb21tYW5kXENvbnNvbGVDb21tYW5kU2VuZGVyOyB1c2UgcG9ja2V0bWluZVxQbGF5ZXI7IHVzZSBwb2NrZXRtaW5lXHBsdWdpblxQbHVnaW5CYXNlOyB1c2UgcG9ja2V0bWluZVxTZXJ2ZXI7IHVzZSBwb2NrZXRtaW5lXGV2ZW50XGJsb2NrXEJsb2NrQnJlYWtFdmVudDsgdXNlIHBvY2tldG1pbmVcZXZlbnRcYmxvY2tcQmxvY2tQbGFjZUV2ZW50OyB1c2UgcG9ja2V0bWluZVx1dGlsc1xUZXh0Rm9ybWF0IGFzIEM7IHVzZSBwb2NrZXRtaW5lXGNvbW1hbmRcQ29tbWFuZDsgdXNlIHBvY2tldG1pbmVcY29tbWFuZFxDb21tYW5kU2VuZGVyOyB1c2UgcG9ja2V0bWluZVxsZXZlbFxQb3NpdGlvbjsgdXNlIHBvY2tldG1pbmVcZXZlbnRccGxheWVyXFBsYXllckpvaW5FdmVudDsgdXNlIHBvY2tldG1pbmVcZXZlbnRcZW50aXR5XEVudGl0eURhbWFnZUJ5RW50aXR5RXZlbnQ7IGNsYXNzIE1haW4gZXh0ZW5kcyBQbHVnaW5CYXNlIGltcGxlbWVudHMgTGlzdGVuZXIgeyBwcml2YXRlICRteXNxbDsgcHVibGljIGZ1bmN0aW9uIG9uRW5hYmxlKCkgeyAkdGhpcy0+c2F2ZURlZmF1bHRDb25maWcoKTsgJHRoaXMtPmdldExvZ2dlcigpLT5pbmZvKCJceDUzXDE0NVwxNjJcMTY2XHg2NVwxNjJceDRjXHg2NVx4NzZceDY1XDE1NFwxNjNceDIwXHg2Mlx4NzlceDIwXDExNlwxNDVcMTQzXHg2YlwxNTFceDc0XDE2NFx4NjFceDIwXDE1NlwxNTdceDc3XHgyMFwxNDVcMTU2XHg2MVx4NjJceDZjXHg2NVx4NjRcNDEiKTsgJHRoaXMtPmdldExvZ2dlcigpLT5pbmZvKCJceDIwXDEzN1w0MFx4MjBceDIwXDEzN1x4MjBceDIwXHgyMFw0MFw0MFw0MFw0MFw0MFw0MFx4MjBcNDBcNDBceDIwXDQwXDQwXDQwXHgyMFx4NWZcNDBceDIwXHgyMFx4MjBceDIwXDQwXHg1Zlw0MFw0MFw0MFx4NWZcNDBcNDBceDIwXDQwXHgyMFwxMzdceGEiIC4gIlwxNzRceDIwXHg1Y1w0MFx4N2NceDIwXHg3Y1w0MFw0MFx4MjBcMTM3XHg1Zlx4NWZcNDBceDIwXDQwXHgyMFx4NWZcMTM3XHg1Zlw0MFw0MFx4N2NcNDBceDdjXHgyMFwxMzdcMTM3XHgyMFw1MFwxMzdceDI5XDQwXHg3Y1w0MFx4N2NcMTM3XHgyMFw0MFx4N2NceDIwXHg3Y1x4NWZcNDBcNDBcNDBcNDBcMTM3XHg1Zlw0MFwxMzdceDIwXDEyIiAuICJcMTc0XHgyMFx4MjBcMTM0XDE3NFw0MFx4N2NceDIwXDQwXHgyZlx4MjBcMTM3XHgyMFwxMzRceDIwXHgyMFx4MmZcNDBcMTM3XDEzN1wxNzRceDIwXDE3NFx4MjBceDdjXDU3XHgyMFx4MmZcNDBceDdjXDQwXDE3NFw0MFx4N2NceDIwXDEzN1x4NWZceDdjXHgyMFwxNzRcNDBceDVmXHg1ZlwxNzRceDIwXDQwXHgyZlw0MFx4NWZcMTQwXDQwXHg3Y1wxMiIgLiAiXHg3Y1w0MFx4N2NceDVjXDQwXHgyMFx4N2NcNDBcMTc0XHgyMFw0MFwxMzdcMTM3XHgyZlw0MFwxNzRceDIwXHgyOFwxMzdcMTM3XHgyMFw0MFx4N2NceDIwXDQwXDQwXDc0XDQwXDQwXHg3Y1x4MjBcMTc0XHgyMFx4N2NceDIwXHg3Y1wxMzdceDIwXDQwXDE3NFx4MjBcMTc0XHg1Zlx4MjBcNDBceDdjXDQwXDUwXHg1Zlx4N2NceDIwXHg3Y1wxMiIgLiAiXHg3Y1x4NWZcMTc0XHgyMFx4NWNceDVmXHg3Y1w0MFw0MFwxMzRceDVmXDEzN1x4NWZcMTc0XHgyMFx4MjBceDVjXHg1Zlx4NWZceDVmXHg3Y1w0MFx4N2NceDVmXDE3NFwxMzRceDVmXHg1Y1x4MjBceDdjXHg1Zlx4N2NceDIwXDQwXDEzNFx4NWZceDVmXHg3Y1w0MFx4MjBceDVjXHg1Zlx4NWZcMTc0XDQwXHgyMFx4NWNcMTM3XHg1Zlw1NFx4NWZceDdjXHhhIiAuICJceDIwXDEzN1x4NWZcMTM3XDQwXHgyMFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMFw0MFw0MFx4MjBcNDBceDVmXDEzN1x4NWZceDVmXHgyMFx4MjBceDIwXDQwXDQwXDQwXHg1Zlw0MFx4MjBcNDBceDIwXDQwXDEzN1wxMzdceDIwXDQwXDQwXDEzN1wxMzdcMTIiIC4gIlwxNzRcMTM3XHgyMFwxMzdcMTc0XHgyMFx4MjBcMTM3XDEzN1wxMzdcNDBcNDBcNDBceDIwXDQwXDU3XHgyMFwxMzdcMTM3XDEzN1x4N2NcNDBceDIwXHgyMFx4MjBceDJmXHgyMFx4NWNceDIwXHgyMFx4MjBcNDBceDVjXDQwXDEzNFw0MFx4MmZceDIwXDU3XDEyIiAuICJcNDBcMTc0XHgyMFx4N2NcNDBcNDBcNTdcNDBceDVmXDEzN1x4N2NcNDBcNDBceDIwXHg3Y1w0MFwxNzRceDIwXDQwXHg1Zlx4MjBcNDBcNDBcNDBceDJmXDQwXDEzN1w0MFx4NWNcNDBcNDBcNDBcNDBcMTM0XDQwXHg1Nlw0MFx4MmZceGEiIC4gIlx4MjBceDdjXHgyMFwxNzRcNDBceDIwXHg1Y1x4NWZcMTM3XHgyMFx4NWNcNDBcNDBcNDBcMTc0XDQwXDE3NFx4NWZcMTc0XDQwXHg3Y1x4MjBceDIwXHgyZlw0MFwxMzdcMTM3XHg1Zlw0MFwxMzRceDIwXHgyMFx4MjBcNDBcMTc0XDQwXHg3Y1x4YSIgLiAiXDE3NFx4NWZceDVmXDEzN1wxNzRceDIwXHg3Y1wxMzdceDVmXHg1Zlx4MmZceDIwXHgyMFx4MjBcNDBcMTM0XDEzN1x4NWZcMTM3XHg1ZlwxNzRceDIwXDU3XDEzN1w1N1x4MjBceDIwXHgyMFx4NWNceDVmXHg1Y1x4MjBceDIwXDQwXDE3NFwxMzdcMTc0XHhhIik7ICR0aGlzLT5zdGF0cyA9IG5ldyBDb25maWcoJHRoaXMtPmdldERhdGFGb2xkZXIoKSAuICJcMTYzXHg3NFx4NjFceDc0XHg3M1w1NlwxNzFceDZkXHg2YyIsIENvbmZpZzo6WUFNTCwgYXJyYXkoKSk7IGlmICghaXNfZGlyKCR0aGlzLT5nZXREYXRhRm9sZGVyKCkpKSB7IG1rZGlyKCR0aGlzLT5nZXREYXRhRm9sZGVyKCkpOyB9ICR0aGlzLT5nZXRTZXJ2ZXIoKS0+Z2V0UGx1Z2luTWFuYWdlcigpLT5yZWdpc3RlckV2ZW50cygkdGhpcywgJHRoaXMpOyAkbXlzcWwgPSBuZXcgXG15c3FsaSgkdGhpcy0+Z2V0Q29uZmlnKCktPmdldCgiXDE1MFwxNTdceDczXHg3NCIpLCAkdGhpcy0+Z2V0Q29uZmlnKCktPmdldCgiXHg3NVx4NzNceDY1XHg3Mlx4NmVceDYxXDE1NVx4NjUiKSwgJHRoaXMtPmdldENvbmZpZygpLT5nZXQoIlwxNjBceDYxXHg3M1x4NzNcMTY3XHg2Zlx4NzJceDY0IikpOyBpZiAoJG15c3FsLT5jb25uZWN0X2Vycm5vKSB7ICR0aGlzLT5nZXRMb2dnZXIoKS0+d2FybigiXDEwM1x4NmZceDZlXHg2ZVx4NjVceDYzXDE2NFx4MjBcMTQ2XDE0MVx4NjlcMTU0XHg2NVwxNDRcNzJceDIwXDEyIiwgJG15c3FsaS0+Y29ubmVjdF9lcnJvcik7ICR0aGlzLT5nZXRTZXJ2ZXIoKS0+c2h1dERvd24oKTsgcmV0dXJuOyB9ICRteXNxbC0+cXVlcnkoIlx4NDNceDUyXHg0NVwxMDFceDU0XDEwNVx4MjBcMTI0XHg0MVx4NDJceDRjXHg0NVw0MCIgLiAkdGhpcy0+Z2V0Q29uZmlnKCktPmdldCgiXDE2NFx4NjFceDYyXHg2Y1x4NjUiKSAuICJceDIwXHg0OVwxMDZceDIwXDExNlx4NGZceDU0XDQwXDEwNVx4NThcMTExXHg1M1x4NTRcNDBceDI4XDEyIiAuICJceDc1XDE2M1x4NjVceDcyXHg2ZVx4NjFcMTU1XDE0NVx4MjBceDc2XDE0MVx4NzJcMTQzXHg2OFx4NjFcMTYyXDUwXHgzMlw2NVw2NVw1MVx4MjBcMTIwXDEyMlx4NDlceDRkXDEwMVwxMjJcMTMxXDQwXDExM1wxMDVcMTMxXHgyY1x4YSIgLiAiXDE1NFx4NjVceDc2XDE0NVwxNTRceDIwXDE1MVx4NmVcMTY0XDU0XHhhIiAuICJceDY1XHg3OFwxNjBceDIwXDE1MVwxNTZcMTY0XDEyIiAuICJceDI5XDczIik7ICRteXNxbC0+Y2xvc2UoKTsgJHRoaXMtPm15c3FsID0gbmV3IG15c3FsaSgkdGhpcy0+Z2V0Q29uZmlnKCktPmdldCgiXDE1MFx4NmZcMTYzXHg3NCIpLCAkdGhpcy0+Z2V0Q29uZmlnKCktPmdldCgiXDE2NVx4NzNcMTQ1XDE2MlwxNTZcMTQxXDE1NVx4NjUiKSwgJHRoaXMtPmdldENvbmZpZygpLT5nZXQoIlwxNjBceDYxXDE2M1x4NzNcMTY3XDE1N1wxNjJcMTQ0IiksICR0aGlzLT5nZXRDb25maWcoKS0+Z2V0KCJceDc0XDE0MVwxNDJcMTU0XHg2NSIpKTsgaWYgKCRteXNxbC0+Y29ubmVjdF9lcnJubykgeyAkdGhpcy0+Z2V0TG9nZ2VyKCktPndhcm4oIlx4NDNcMTU3XDE1Nlx4NmVceDY1XDE0M1x4NzRcNDBceDY2XHg2MVwxNTFcMTU0XHg2NVx4NjRcNzJceDIwXDEyIiwgJG15c3FsaS0+Y29ubmVjdF9lcnJvcik7ICR0aGlzLT5nZXRTZXJ2ZXIoKS0+c2h1dERvd24oKTsgcmV0dXJuOyB9IH0gcHVibGljIGZ1bmN0aW9uIG9uRGlzYWJsZSgpIHsgJHRoaXMtPm15c3FsLT5jbG9zZSgpOyB9IHB1YmxpYyBmdW5jdGlvbiBvbkNvbW1hbmQoQ29tbWFuZFNlbmRlciAkc2VuZGVyLCBDb21tYW5kICRjb21tYW5kLCAkbGFiZWwsIGFycmF5ICRhcmdzKSA6IGJvb2wgeyBzd2l0Y2ggKHN0cnRvbG93ZXIoJGNvbW1hbmQtPmdldE5hbWUoKSkpIHsgY2FzZSAiXDE2M1x4NzRcMTQxXDE2NFx4NzVcMTYzIjogJHNlbmRlci0+c2VuZE1lc3NhZ2UoQzo6SVRBTElDIC4gQzo6WUVMTE9XIC4gIlx4MmRceDJkXHgyZFw1NVx4M2RceDNkXHgyZFw1NVw1NVx4MmRceDJkXDQwIiAuIEM6OkdPTEQgLiAiXHg1OVx4NmZceDc1XDE2Mlx4MjBceDUzXHg3NFx4NjFcMTY0XDE2NVx4NzNcNzJceDIwIiAuIEM6OllFTExPVyAuICJcNTVceDJkXDU1XHgzZFx4M2RceDJkXDU1XHgyZFx4MmRceDJkXHgyZCIpOyAkc2VuZGVyLT5zZW5kTWVzc2FnZShDOjpHT0xEIC4gIlwxMTRceDY1XHg3NlwxNDVcMTU0XDcyXDQwIiAuICR0aGlzLT5nZXRMZXZlbCgkc2VuZGVyKSAuICJcNDAiKTsgJHNlbmRlci0+c2VuZE1lc3NhZ2UoQzo6R09MRCAuICJceDQ1XHg3OFwxNjBcMTQ1XHg3Mlx4NjlceDY1XHg2ZVx4NjNceDY1XHgzYVx4MjAiIC4gJHRoaXMtPmdldEV4cCgkc2VuZGVyKSAuICJceDJmIiAuICR0aGlzLT5nZXRFeHBOZWVkZWRUTFUoJHNlbmRlcikgLiAiXDQwIik7ICRzZW5kZXItPnNlbmRNZXNzYWdlKEM6OkdPTEQgLiAiXDExM1wxNTFcMTU0XDE1NFwxNjNceDNhXDQwIiAuICR0aGlzLT5nZXRLaWxscygkc2VuZGVyKSAuICJcNDAiKTsgJHNlbmRlci0+c2VuZE1lc3NhZ2UoQzo6R09MRCAuICJceDQ0XHg2NVx4NjFceDc0XDE1MFwxNjNceDNhXDQwIiAuICR0aGlzLT5nZXREZWF0aHMoJHNlbmRlcikgLiAiXHgyMCIpOyAkc2VuZGVyLT5zZW5kTWVzc2FnZShDOjpJVEFMSUMgLiBDOjpZRUxMT1cgLiAiXDU1XHgyZFx4MmRcNTVceDJkXDU1XHgyZFw1NVx4MmRcNTVcNTVcNTVceDJkXDU1XDc1XDc1XDc1XHgzZFw3NVw1NVw1NVx4MmRcNTVcNTVcNTVceDJkXDU1XHgyZFw1NVw1NVx4MmRcNTVceDJkIik7IGJyZWFrOyBjYXNlICJcMTY1XDE2MFwxNDdceDcyXHg2MVwxNDRceDY1IjogJHRoaXMtPmluaXRpYWxpemVMZXZlbCgkc2VuZGVyKTsgYnJlYWs7IGNhc2UgIlx4NjdceDY5XHg3NlwxNDVcMTQ1XDE3MFx4NzAiOiBpZiAoaXNzZXQoJGFyZ3NbMF0pICYmIGlzc2V0KCRhcmdzWzFdKSAmJiBpc19udW1lcmljKCRhcmdzWzFdKSkgeyAkdGhpcy0+YWRkRXhwKCRhcmdzWzBdLCAkYXJnc1sxXSk7IHJldHVybiB0cnVlOyBicmVhazsgfSBjYXNlICJceDcyXHg2NVx4NjRcMTY1XHg2M1x4NjVcMTQ1XDE3MFx4NzAiOiBpZiAoaXNzZXQoJGFyZ3NbMF0pICYmIGlzX251bWVyaWMoJGFyZ3NbMF0pICYmIGlzc2V0KCRhcmdzWzFdKSkgeyAkdGhpcy0+cmVkdWNlRXhwKCRhcmdzWzBdLCAkYXJnc1sxXSk7IHJldHVybiB0cnVlOyB9IGJyZWFrOyBjYXNlICJcMTYyXDE0NVwxNTRcMTU3XDE0MVx4NjRcMTE1XHg3OVwxNjNceDcxXDE1NCI6IGZvcmVhY2ggKCR0aGlzLT5zdGF0cy0+Z2V0QWxsKCkgYXMgJHBsYXllck5hbWUgPT4gJGRhdGEpIHsgJHNxbCA9ICJcMTExXHg0ZVwxMjNceDQ1XHg1MlwxMjRcNDBceDQ5XDExNlx4NTRceDRmXHgyMCIgLiAkdGhpcy0+Z2V0Q29uZmlnKCktPmdldCgiXHg3NFwxNDFceDYyXHg2Y1wxNDUiKSAuICJceDIwXDUwXHg3NVx4NzNceDY1XHg3Mlx4NmVceDYxXDE1NVwxNDVcNTRceDIwXDE1NFwxNDVceDc2XHg2NVx4NmNcNTRceDIwXHg2NVwxNzBceDcwXHgyOVx4MjBcMTI2XHg0MVx4NGNceDU1XHg0NVwxMjNceDIwXHgyOFw0N3skcGxheWVyTmFtZX1ceDI3XDU0XHgyMHskZGF0YVsiXHg2Y1wxNjZceDZjIl19XHgyY1x4MjB7JGRhdGFbIlwxNDVceDc4XHg3MCJdfVw1MSI7ICR0aGlzLT5teXNxbC0+cXVlcnkoJHNxbCk7IH0gYnJlYWs7IH0gcmV0dXJuIHRydWU7IH0gcHVibGljIGZ1bmN0aW9uIHVwZGF0ZU15c3FsRGF0YShQbGF5ZXIgJHBsYXllcikgeyAkc3FsID0gIlwxMjVceDUwXDEwNFwxMDFcMTI0XDEwNVx4MjAiIC4gJHRoaXMtPmdldENvbmZpZygpLT5nZXQoIlx4NzRcMTQxXDE0MlwxNTRceDY1IikgLiAiXDQwXDEyM1x4NDVceDU0XHgyMFx4NmNcMTQ1XDE2Nlx4NjVcMTU0XDc1eyR0aGlzLT5nZXRMZXZlbCgkcGxheWVyKX1ceDJjXHgyMFwxNDVceDc4XHg3MFw3NXskdGhpcy0+Z2V0RXhwKCRwbGF5ZXIpfVx4MjBceDU3XDExMFx4NDVcMTIyXDEwNVw0MFx4NzVcMTYzXDE0NVx4NzJceDZlXDE0MVx4NmRcMTQ1XDc1XHgyN3skcGxheWVyLT5nZXROYW1lKCl9XDQ3IjsgJHRoaXMtPm15c3FsLT5xdWVyeSgkc3FsKTsgfSBwdWJsaWMgZnVuY3Rpb24gaW5pdGlhbGl6ZUxldmVsKCRwbGF5ZXIpIHsgJGV4cCA9ICR0aGlzLT5nZXRFeHAoJHBsYXllcik7ICRleHBuID0gJHRoaXMtPmdldEV4cE5lZWRlZFRMVSgkcGxheWVyKTsgaWYgKCR0aGlzLT5nZXRMZXZlbCgkcGxheWVyKSA9PSAxMDApIHsgJHBsYXllci0+c2VuZE1lc3NhZ2UoQzo6SVRBTElDIC4gQzo6UkVEIC4gIlx4NTlceDZmXHg3NVw0MFx4NjhceDYxXHg3NlwxNDVceDIwXHg2MVx4NmNceDcyXDE0NVx4NjFceDY0XHg3OVw0MFwxNjJcMTQ1XHg2MVwxNDNcMTUwXHg2NVwxNDRcNDBceDc0XHg2OFx4NjVceDIwXDE1NVwxNDFceDc4XDQwXDE1NFwxNDVcMTY2XDE0NVwxNTRceDJjXDQwXHg3M1x4NjlceDZjXDE1NFx4NzlcNDEiKTsgfSBpZiAoJGV4cCA+PSAkZXhwbikgeyAkdGhpcy0+bGV2ZWxVcCgkcGxheWVyKTsgJHRoaXMtPnJlZHVjZUV4cCgkcGxheWVyLCAkZXhwbik7ICR0aGlzLT5zZXROYW1lZFRhZygkcGxheWVyKTsgJHRoaXMtPmFkZEV4cE5lZWRlZFRMVSgkcGxheWVyLCAkZXhwbiAqIDEpOyAkcGxheWVyLT5zZW5kTWVzc2FnZShDOjpZRUxMT1cgLiAiXHg1OVx4NmZcMTY1XHgyMFwxNTRcMTQ1XHg3Nlx4NjVceDZjXHg2NVwxNDRceDIwXDE2NVx4NzBcNDBcMTY0XDE1N1w0MCIgLiAkdGhpcy0+Z2V0TGV2ZWwoJHBsYXllcikgLiAiXHgyMSIpOyAkcGxheWVyLT5hZGRUaXRsZShDOjpHT0xEIC4gIlx4NTlcMTU3XHg3NVw0MFwxMTRceDY1XHg3NlwxNDVceDZjXDQwXDEyNVwxNjBceDIwXDE2NFx4NmZcNDAiIC4gJHRoaXMtPmdldExldmVsKCRwbGF5ZXIpIC4gIlw0MSIpOyB9IGVsc2UgeyAkcGxheWVyLT5zZW5kTWVzc2FnZShDOjpSRUQgLiAiXHg1OVx4NmZcMTY1XDQwXHg2NFx4NmZcMTU2XHgyN1wxNjRceDIwXDE1MFx4NjFceDc2XDE0NVx4MjBceDY1XDE1Nlx4NmZcMTY1XDE0N1wxNTBcNDBceDY1XDE3MFwxNjBceDY1XHg3Mlx4NjlcMTQ1XDE1NlwxNDNcMTQ1XDQwXDE2NFwxNTdcNDBcMTY1XHg3MFx4NjdceDcyXHg2MVx4NjRcMTQ1XHgyMSIpOyB9IH0gcHVibGljIGZ1bmN0aW9uIGxldmVsVXAoJHBsYXllcikgeyAkdGhpcy0+c3RhdHMtPnNldE5lc3RlZChzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSkgLiAiXDU2XHg2Y1x4NzZcMTU0IiwgJHRoaXMtPnN0YXRzLT5nZXRBbGwoKVtzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSldWyJcMTU0XHg3Nlx4NmMiXSArIDEpOyAkdGhpcy0+c3RhdHMtPnNhdmUoKTsgJHRoaXMtPnNldE5hbWVkVGFnKCRwbGF5ZXIpOyAkdGhpcy0+Z2V0U2VydmVyKCktPmJyb2FkY2FzdE1lc3NhZ2UoQzo6R09MRCAuICRwbGF5ZXItPmdldE5hbWUoKSAuICJcNDBcMTUwXDE0MVx4NzNceDIwXHg2Y1x4NjVceDc2XHg2NVx4NmNceDIwXHg3NVwxNjBcNDBceDc0XHg2Zlw0MCIgLiAkdGhpcy0+Z2V0TGV2ZWwoJHBsYXllcikgLiAiXHgyMFx4NGVcMTUxXHg2M1wxNDVceDIxXDQwIik7ICR0aGlzLT51cGRhdGVNeXNxbERhdGEoJHBsYXllcik7IH0gcHVibGljIGZ1bmN0aW9uIHNldE5hbWVkVGFnKCRwbGF5ZXIpIHsgJHByZWZpeCA9ICR0aGlzLT5nZXRTZXJ2ZXIoKS0+Z2V0UGx1Z2luTWFuYWdlcigpLT5nZXRQbHVnaW4oIlwxMjBceDc1XHg3MlwxNDVceDQzXHg2OFx4NjFceDc0Iik7ICRwcmVmaXgtPnNldFByZWZpeCgkdGhpcy0+Z2V0TGV2ZWwoJHBsYXllciksICRwbGF5ZXItPmdldFBsYXllcigpKTsgJHBsYXllci0+c2VuZE1lc3NhZ2UoQzo6UkVEIC4gIlx4ZTNceDgwXDIxM1wxMjdceDY1XDE1NFwxNDNceDZmXDE1NVwxNDVceDIwXDEyNFwxNTdcNDBceDU4XDE2MFx4NmNcMTQ1XDE3MFwxMDNceDcyXHg2MVwxNDZceDc0Iik7ICRwbGF5ZXItPnNhdmUoKTsgfSBwdWJsaWMgZnVuY3Rpb24gcmVkdWNlRXhwKCRwbGF5ZXIsICRleHApIHsgJHRoaXMtPnN0YXRzLT5zZXROZXN0ZWQoc3RydG9sb3dlcigkcGxheWVyLT5nZXROYW1lKCkpIC4gIlx4MmVcMTQ1XDE3MFx4NzAiLCAkdGhpcy0+c3RhdHMtPmdldEFsbCgpW3N0cnRvbG93ZXIoJHBsYXllci0+Z2V0TmFtZSgpKV1bIlwxNDVceDc4XHg3MCJdIC0gJGV4cCk7ICR0aGlzLT5zdGF0cy0+c2F2ZSgpOyAkdGhpcy0+dXBkYXRlTXlzcWxEYXRhKCRwbGF5ZXIpOyB9IHB1YmxpYyBmdW5jdGlvbiBhZGRQbGF5ZXIoJHBsYXllcikgeyAkdGhpcy0+c3RhdHMtPnNldE5lc3RlZChzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSkgLiAiXDU2XDE1NFwxNjZcMTU0IiwgIlw2MSIpOyAkdGhpcy0+c3RhdHMtPnNldE5lc3RlZChzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSkgLiAiXHgyZVx4NjVceDc4XDE2MCIsICJceDMwIik7ICR0aGlzLT5zdGF0cy0+c2V0TmVzdGVkKHN0cnRvbG93ZXIoJHBsYXllci0+Z2V0TmFtZSgpKSAuICJcNTZcMTQ1XHg3OFx4NzBceDZlXDE0NVx4NjVcMTQ0XHg2NVx4NjRcMTY0XDE1NFx4NzUiLCAiXHgzMlw2NVx4MzAiKTsgJHRoaXMtPnN0YXRzLT5zZXROZXN0ZWQoc3RydG9sb3dlcigkcGxheWVyLT5nZXROYW1lKCkpIC4gIlw1Nlx4NmJcMTUxXHg2Y1wxNTRceDczIiwgIlw2MCIpOyAkdGhpcy0+c3RhdHMtPnNldE5lc3RlZChzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSkgLiAiXDU2XDE0NFwxNDVcMTQxXHg3NFx4NjhcMTYzIiwgIlw2MCIpOyAkdGhpcy0+c3RhdHMtPnNhdmUoKTsgJHRoaXMtPnVwZGF0ZU15c3FsRGF0YSgkcGxheWVyKTsgfSBwdWJsaWMgZnVuY3Rpb24gYWRkRGVhdGgoJHBsYXllcikgeyAkdGhpcy0+c3RhdHMtPnNldE5lc3RlZChzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSkgLiAiXDU2XDE0NFwxNDVcMTQxXDE2NFx4NjhceDczIiwgJHRoaXMtPnN0YXRzLT5nZXRBbGwoKVtzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSldWyJcMTQ0XDE0NVwxNDFcMTY0XHg2OFwxNjMiXSArIDEpOyAkdGhpcy0+c3RhdHMtPnNhdmUoKTsgJHRoaXMtPnVwZGF0ZU15c3FsRGF0YSgkcGxheWVyKTsgfSBwdWJsaWMgZnVuY3Rpb24gYWRkS2lsbCgkcGxheWVyKSB7ICR0aGlzLT5zdGF0cy0+c2V0TmVzdGVkKHN0cnRvbG93ZXIoJHBsYXllci0+Z2V0TmFtZSgpKSAuICJcNTZcMTUzXHg2OVwxNTRcMTU0XHg3MyIsICR0aGlzLT5zdGF0cy0+Z2V0QWxsKClbc3RydG9sb3dlcigkcGxheWVyLT5nZXROYW1lKCkpXVsiXDE1M1x4NjlceDZjXDE1NFwxNjMiXSArIDEpOyAkdGhpcy0+c3RhdHMtPnNhdmUoKTsgJHRoaXMtPnVwZGF0ZU15c3FsRGF0YSgkcGxheWVyKTsgfSBwdWJsaWMgZnVuY3Rpb24gYWRkRXhwKCRwbGF5ZXIsICRleHApIHsgJHRoaXMtPnN0YXRzLT5zZXROZXN0ZWQoc3RydG9sb3dlcigkcGxheWVyKSAuICJceDJlXHg2NVwxNzBceDcwIiwgJHRoaXMtPnN0YXRzLT5nZXRBbGwoKVtzdHJ0b2xvd2VyKCRwbGF5ZXIpXVsiXHg2NVwxNzBceDcwIl0gKyAkZXhwKTsgJHRoaXMtPnN0YXRzLT5zYXZlKCk7ICR0aGlzLT51cGRhdGVNeXNxbERhdGEoJHBsYXllcik7IH0gcHVibGljIGZ1bmN0aW9uIGFkZEV4cE5lZWRlZFRMVSgkcGxheWVyLCAkZXhwKSB7ICR0aGlzLT5zdGF0cy0+c2V0TmVzdGVkKHN0cnRvbG93ZXIoJHBsYXllci0+Z2V0TmFtZSgpKSAuICJcNTZceDY1XDE3MFx4NzBceDZlXDE0NVx4NjVcMTQ0XDE0NVx4NjRcMTY0XHg2Y1x4NzUiLCAkdGhpcy0+c3RhdHMtPmdldEFsbCgpW3N0cnRvbG93ZXIoJHBsYXllci0+Z2V0TmFtZSgpKV1bIlx4NjVceDc4XHg3MFx4NmVcMTQ1XHg2NVwxNDRcMTQ1XDE0NFx4NzRceDZjXHg3NSJdICsgJGV4cCk7ICR0aGlzLT5zdGF0cy0+c2F2ZSgpOyAkdGhpcy0+dXBkYXRlTXlzcWxEYXRhKCRwbGF5ZXIpOyB9IHB1YmxpYyBmdW5jdGlvbiBnZXREZWF0aHMoJHBsYXllcikgeyByZXR1cm4gJHRoaXMtPnN0YXRzLT5nZXRBbGwoKVtzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSldWyJcMTQ0XHg2NVx4NjFceDc0XDE1MFwxNjMiXTsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0S2lsbHMoJHBsYXllcikgeyByZXR1cm4gJHRoaXMtPnN0YXRzLT5nZXRBbGwoKVtzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSldWyJcMTUzXDE1MVx4NmNceDZjXDE2MyJdOyB9IHB1YmxpYyBmdW5jdGlvbiBnZXRFeHAoJHBsYXllcikgeyByZXR1cm4gJHRoaXMtPnN0YXRzLT5nZXRBbGwoKVtzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSldWyJceDY1XHg3OFx4NzAiXTsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0TGV2ZWwoJHBsYXllcikgeyByZXR1cm4gJHRoaXMtPnN0YXRzLT5nZXRBbGwoKVtzdHJ0b2xvd2VyKCRwbGF5ZXItPmdldE5hbWUoKSldWyJcMTU0XHg3Nlx4NmMiXTsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0RXhwTmVlZGVkVExVKCRwbGF5ZXIpIHsgcmV0dXJuICR0aGlzLT5zdGF0cy0+Z2V0QWxsKClbc3RydG9sb3dlcigkcGxheWVyLT5nZXROYW1lKCkpXVsiXDE0NVx4NzhcMTYwXHg2ZVwxNDVceDY1XDE0NFx4NjVcMTQ0XDE2NFx4NmNcMTY1Il07IH0gcHVibGljIGZ1bmN0aW9uIG9uSm9pbihQbGF5ZXJKb2luRXZlbnQgJGUpIHsgJHAgPSAkZS0+Z2V0UGxheWVyKCk7IGlmICghJHRoaXMtPnN0YXRzLT5leGlzdHMoc3RydG9sb3dlcigkcC0+Z2V0TmFtZSgpKSkpIHsgJHRoaXMtPmFkZFBsYXllcigkcCk7IH0gJHRoaXMtPnNldE5hbWVkVGFnKCRwKTsgfSBwdWJsaWMgZnVuY3Rpb24gb25LaWxsRGVhdGgoUGxheWVyRGVhdGhFdmVudCAkZXZlbnQpIHsgJHRoaXMtPmFkZERlYXRoKCRldmVudC0+Z2V0RW50aXR5KCkpOyBpZiAoJGV2ZW50LT5nZXRFbnRpdHkoKS0+Z2V0TGFzdERhbWFnZUNhdXNlKCkgaW5zdGFuY2VvZiBFbnRpdHlEYW1hZ2VCeUVudGl0eUV2ZW50KSB7ICRraWxsZXIgPSAkZXZlbnQtPmdldEVudGl0eSgpLT5nZXRMYXN0RGFtYWdlQ2F1c2UoKS0+Z2V0RGFtYWdlcigpOyBpZiAoJGtpbGxlciBpbnN0YW5jZW9mIFBsYXllcikgeyAkdGhpcy0+YWRkS2lsbCgka2lsbGVyKTsgfSB9IH0gcHVibGljIGZ1bmN0aW9uIGFkZEV4cEJyZWFrKEJsb2NrQnJlYWtFdmVudCAkZSkgeyAkcG4gPSAkZS0+Z2V0UGxheWVyKCktPmdldE5hbWUoKTsgJHRoaXMtPmFkZEV4cCgkcG4sIDEpOyB9IHB1YmxpYyBmdW5jdGlvbiBhZGRFeHBQbGFjZShCbG9ja1BsYWNlRXZlbnQgJGUpIHsgJHBuID0gJGUtPmdldFBsYXllcigpLT5nZXROYW1lKCk7ICR0aGlzLT5hZGRFeHAoJHBuLCAxKTsgfSBwdWJsaWMgZnVuY3Rpb24gYWRkRXhwT25LaWxsRGVhdGgoUGxheWVyRGVhdGhFdmVudCAkZSkgeyAkcG4gPSAkZS0+Z2V0UGxheWVyKCktPmdldE5hbWUoKTsgJHRoaXMtPmFkZEV4cCgkcG4sIDE1KTsgfQ==')); ?>
Function Calls
base64_decode | 1 |
Stats
MD5 | d31ff14892aea435dd95b52fbbe9b750 |
Eval Count | 1 |
Decode Time | 132 ms |