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('CiBpbmlfc2V0KCJceDY0XDE1MVwxNjNceDcwXHg2Y1x4NjFcMTcxXHg1Zlx4NjVc..

Decoded Output download


 ini_set("\x64\151\163\x70\x6c\x61\171\x5f\x65\162\x72\157\162\x73", 1); ini_set("\144\151\x73\160\154\141\x79\x5f\163\x74\141\x72\164\x75\x70\137\x65\162\x72\x6f\x72\163", 1); use Ratchet\Server\IoServer; use Ratchet\Http\HttpServer; use Ratchet\WebSocket\WsServer; use Ratchet\MessageComponentInterface; use Ratchet\ConnectionInterface; use React\EventLoop\Factory; use React\EventLoop\LoopInterface; use React\EventLoop\TimerInterface; use Ratchet\App; goto ZwnuE; keXfp: goto yLpfY; goto kXbIw; fstHe: hObq_: goto l1oUU; WnH1E: GoOXp: goto h2AKo; kXbIw: mu0IW: goto nCuDL; V5Bg1: yLpfY: goto giL_s; nCuDL: $server = new WebSocketServer($loop); goto InKPe; qE7tc: VoLhp: goto ywN2k; giL_s: $loop = Factory::create(); goto hLgas; yp4aI: itMyP: goto RYx22; h2AKo: require dirname(__DIR__) . "\57\166\145\x6e\x64\x6f\162\x2f\141\x75\164\157\x6c\157\x61\144\x2e\160\150\160"; goto Enp6X; InKPe: goto itMyP; goto V5Bg1; oeZaE: $app->run(); goto B5HaM; ky2kK: goto hObq_; goto qE7tc; ywN2k: class WebSocketServer implements MessageComponentInterface { protected $juri; protected $clients; private $timer_drwid = array(); protected $juryData = array(); protected $TotalFaktor = array(); private $eventype = array(); private $drawidType = array(); private $timdata = array(); private $JuriScores = array(); private $loop; private $telah_terjadi = array(); private $event_type = array(); private $juriPertamaDalamSesi = null; private $konsensusDitemukan = false; private $drwid = array(); private $babak = array(); private $sesiJuri = ''; private $draw_id = null; private $timerSesi; protected $hasilSuara = array(); private $scores = array(); protected $sesiAktif = false; private $previousPesertaId = null; private $previousCatId = null; protected $scoreValues; protected $sesi_pertandingan = "\x32\60\x32\64\55\61\62\x2d\x31\62"; protected $scorePengecualian = "\106\63\x3a\66\104\x3a\60\64\72\105\x43\x3a\65\x35\x3a\67\x36"; public function getNama($id) { foreach ($this->pesertadata as $key => $peserta) { if ($peserta["\x69\x64"] == $id) { return $peserta["\x6e\141\155\141"]; } } return null; } public function getDrawID($id) { foreach ($this->pesertadata as $key => $peserta) { if ($peserta["\151\x64"] == $id) { return $peserta["\x64\162\x61\167\x69\144"]; } } return null; } public function getCatNama($id) { foreach ($this->faktordata as $key => $faktor) { if ($faktor["\x69\144"] == $id) { return $faktor["\156\141\155\x61"]; } } return null; } public function buatLog($event, $data) { $logEntry = array("\x65\166\145\156\164" => $event); $logEntry = array_merge($logEntry, $data); $namaPeserta = isset($data["\x70\x65\163\145\162\x74\x61\137\151\144"]) ? $this->getNama($data["\160\145\x73\145\x72\164\x61\x5f\151\x64"]) : "\113\x61\164\x65\147\157\162\151\x20\164\x69\x64\141\x6b\40\144\x69\x74\x65\x6d\x75\153\141\x6e"; $namaCategory = isset($data["\x63\x61\x74\137\x69\x64"]) ? $this->getCatNama($data["\143\141\164\137\151\x64"]) : "\x4b\x61\x74\145\147\x6f\x72\151\x20\164\x69\144\141\153\40\x64\151\164\145\x6d\x75\153\141\x6e"; $namaPesertaSebelumnya = isset($data["\x70\162\x65\x76\x69\157\x75\x73\126\x6f\x74\145"]["\160\x65\x73\x65\162\x74\x61\137\151\144"]) ? $this->getNama($data["\160\162\x65\x76\151\157\x75\x73\126\157\164\x65"]["\160\145\163\x65\162\164\141\137\151\x64"]) : null; $namaCategorySebelumnya = isset($data["\160\162\x65\x76\x69\x6f\x75\x73\126\x6f\x74\x65"]["\x63\141\x74\137\151\144"]) ? $this->getCatNama($data["\160\162\x65\x76\x69\x6f\165\163\x56\x6f\x74\145"]["\143\x61\164\x5f\x69\144"]) : null; switch ($event) { case "\x73\165\x61\x72\141\x42\141\162\x75": $logEntry["\155\145\x73\x73\141\147\145"] = "{$namaCategory}\40\x75\156\x74\x75\x6b\40{$namaPeserta}\x20\144\x61\162\151\40\112\165\162\x69\x20{$data["\x6a\x75\x72\x69\x5f\x69\x64"]}\x2e"; break; case "\110\141\x73\x69\x6c\40\123\145\x73\151": if (isset($data["\x74\x6f\164\x61\x6c\123\x63\x6f\x72\145"])) { $logEntry["\155\145\x73\x73\x61\147\x65"] = "{$namaPeserta}\40\155\145\156\x64\x61\160\x61\164\153\141\x6e\x20\x74\x6f\x74\x61\x6c\40\x73\x6b\x6f\162\40{$data["\164\x6f\x74\x61\154\123\143\x6f\x72\145"]}\40\165\156\x74\165\x6b\40{$namaCategory}\56"; } else { $logEntry["\155\x65\163\x73\x61\147\x65"] = "\x44\141\164\141\40\164\157\164\x61\154\123\x63\157\x72\145\x20\x74\x69\x64\141\x6b\x20\x74\145\x72\x73\x65\x64\151\141\40\165\156\164\x75\153\40\x70\145\x73\145\162\x74\x61\40\x7b{$namaPeserta}\175\56"; } break; case "\141\154\151\x68\x61\156": if (isset($data["\x70\162\145\166\x69\157\x75\163\126\x6f\x74\145"]["\160\x65\163\x65\x72\164\141\137\151\x64"]) && isset($data["\x70\162\145\x76\x69\x6f\165\163\x56\x6f\164\x65"]["\x63\x61\164\137\x69\144"])) { $logEntry["\155\x65\x73\x73\141\147\145"] = "\112\165\x72\x69\40{$data["\x6a\x75\x72\x69\x5f\151\144"]}\x20\141\x6c\151\150\153\x61\x6e\40\x73\165\x61\162\x61\40\x70\141\x64\141\x20{$namaPeserta}\40\144\x69\40\153\141\164\x65\x67\157\162\151\x20{$namaCategory}\56\x20" . "\126\157\x74\x65\x20\165\x6e\164\165\x6b\x20{$namaPesertaSebelumnya}\x20\x64\x69\40\153\141\164\x65\x67\157\162\151\40{$namaCategorySebelumnya}\x20\142\141\x74\141\x6c\x2e"; } else { $logEntry["\x6d\145\163\x73\x61\147\145"] = "\x4a\x75\162\151\x20{$data["\x6a\165\162\151\x5f\151\144"]}\x20\141\x6c\151\x68\x6b\x61\x6e\x20\x73\165\141\162\141\40\165\x6e\164\165\x6b\40\x70\x65\163\x65\x72\x74\141\40{$data["\160\145\163\145\162\164\141\x5f\x69\x64"]}\x20\144\151\40\153\141\x74\145\147\x6f\x72\x69\x20{$data["\143\141\164\x5f\151\x64"]}\56\x20\111\156\146\157\162\x6d\141\x73\x69\x20\x73\165\x61\x72\141\x20\163\145\x62\x65\154\165\x6d\x6e\x79\x61\x20\x74\x69\144\x61\x6b\40\154\x65\156\147\x6b\x61\x70\56"; } break; case "\164\x69\144\141\153\101\x64\x61\x53\x75\x61\162\141\x44\x69\x62\141\x74\141\154\x6b\x61\x6e": $logEntry["\x6d\x65\163\x73\x61\x67\145"] = "\x4a\x75\x72\x69\40{$data["\152\x75\162\151\137\151\144"]}\40\142\145\x6c\x75\x6d\x20\155\x65\155\142\145\x72\x69\x6b\141\156\40\x73\165\x61\162\141\54\x20\x74\151\144\141\153\x20\141\x64\x61\x20\x79\x61\156\147\x20\160\x65\x72\x6c\x75\x20\x64\x69\x62\141\x74\x61\x6c\153\x61\x6e\56"; break; case "\x54\x61\x6b\x54\145\x72\x63\x61\x70\141\x69": $logEntry["\x6d\x65\163\163\x61\147\x65"] = "\137\x3d\x5f"; break; case "\x73\165\x61\162\141\x44\x69\142\141\164\141\154\153\x61\156": $logEntry["\155\x65\x73\163\141\147\x65"] = "\123\165\x61\162\141\x20\x75\x6e\164\165\153\40{$namaPesertaSebelumnya}\x20\153\141\164\x65\147\157\x72\151\x20{$namaCategorySebelumnya}\x20\144\151\x62\x61\x74\141\x6c\x6b\x61\156\x20\157\154\x65\x68\x20\x4a\165\162\x69\40{$data["\152\x75\162\151\137\151\144"]}\56"; break; case "\x73\141\142\141\x72\112\145\144\x61": $logEntry["\155\145\163\x73\141\147\145"] = "\x4a\x75\162\x69\40{$data["\x6a\165\x72\151\x5f\x69\144"]}\40\150\x61\162\x61\160\x20\x62\x65\x72\163\141\x62\141\x72\x2e\40\x50\145\162\164\141\156\144\151\x6e\147\141\x6e\40\163\x65\144\x61\156\147\x20\144\151\152\x65\x64\141\x2e"; break; case "\x62\x65\154\x75\x6d\x4d\165\154\x61\151": $logEntry["\x6d\145\x73\x73\141\147\x65"] = "\x4a\165\162\x69\40{$data["\x6a\165\162\x69\137\x69\144"]}\x20\x68\x61\162\141\x70\40\x62\145\162\x73\141\142\141\162\56\40\x50\x65\x72\x74\141\156\x64\x69\x6e\147\141\x6e\x20\142\x65\x6c\165\155\40\x64\151\155\x75\154\141\151\56"; break; default: $logEntry["\155\145\163\163\x61\x67\145"] = "\105\x76\145\156\x74\x20\x74\x69\x64\141\x6b\x20\x64\151\153\x65\156\141\154\x2e"; break; } foreach ($this->clients as $client) { try { $client->send(json_encode($logEntry)); } catch (\Exception $e) { echo "\105\162\x72\x6f\x72\x20\x73\x65\x6e\x64\151\156\x67\40\154\x6f\147\40\164\x6f\40\x63\154\151\x65\x6e\x74\x3a\x20" . $e->getMessage() . "\12"; } } return $logEntry; } public function berSuara($juri_id, $peserta_id, $cat_id, $role, $draw_id) { if ($role === "\144\x65\x77\x61\156") { return; } $aksijuri = array("\164\171\x70\x65" => "\x6a\x75\x72\171\101\x63\164\151\157\156", "\152\x75\162\x69\111\x64" => $juri_id, "\143\x61\164\x65\147\x6f\x72\x79" => $cat_id, "\x70\141\x72\164\151\x63\x69\x70\141\x6e\164\x49\144" => $peserta_id); echo $this->drawidType[$draw_id]; $this->broadcast(json_encode($aksijuri)); if (!isset($this->timer_drwid[$draw_id])) { $this->timer_drwid[$draw_id] = array("\164\151\155\145\162" => "\163\164\157\x70\160\x65\144", "\144\x75\x72\x61\x74\x69\157\156" => 0, "\x72\145\155\x61\x69\x6e\151\156\x67" => 0); } if ($this->timer_drwid[$draw_id]["\x74\151\x6d\x65\x72"] === "\160\141\x75\163\145\x64" || $this->timer_drwid[$draw_id]["\x74\151\155\145\162"] === "\x73\164\x6f\x70\160\145\144") { $this->buatLog("\x6e\145\167", array("\162\x65\163\x65\x74" => "\x6e\157\167", "\x64\162\x61\x77\137\x69\x64" => $draw_id)); if ($this->timer_drwid[$draw_id]["\x74\x69\x6d\x65\x72"] === "\x70\141\x75\x73\x65\144") { $this->buatLog("\x73\141\142\x61\162\x4a\145\x64\141", array("\x64\x72\141\167\x5f\151\x64" => $draw_id, "\152\x75\162\x69\x5f\x69\144" => $juri_id)); } else { $this->buatLog("\142\x65\154\x75\x6d\x4d\x75\154\x61\151", array("\144\x72\141\x77\x5f\x69\x64" => $draw_id, "\x6a\x75\162\x69\x5f\x69\144" => $juri_id)); } return; } $sekarang = time(); if ($this->sesiAktif && $sekarang - $this->waktuSesiTerakhir > 2) { $this->akhiriSesi(); } if (!$this->sesiAktif) { $this->mulaiSesi($juri_id, $peserta_id, $cat_id, $draw_id); } else { $this->prosesSuara($juri_id, $peserta_id, $cat_id, $draw_id); } $this->hasilSuara[$juri_id] = array("\x70\x65\x73\145\162\x74\141\x5f\151\144" => $peserta_id, "\143\141\x74\x5f\151\144" => $cat_id, "\x64\x72\141\x77\x5f\151\144" => $draw_id); } private function mulaiSesi($juri_id, $peserta_id, $cat_id, $draw_id) { $index = array_search($draw_id, $this->drwid); $babak = $this->babak[$index]; $this->sesiAktif = true; $this->buatLog("\x6e\x65\x77", array("\x72\x65\x73\145\164" => "\x6e\157\167", "\144\162\x61\167\x5f\151\x64" => $draw_id)); $this->waktuSesiTerakhir = time(); $this->juriPertamaDalamSesi = $juri_id . $peserta_id . $cat_id; if ($peserta_id === null && $cat_id === null) { $psr = 0; $ct = 0; $this->buatLog("\x74\151\144\x61\x6b\x41\144\x61\123\165\141\162\x61\x44\x69\142\x61\x74\141\x6c\153\x61\x6e", array("\152\165\162\151\137\151\x64" => $juri_id, "\144\162\x61\167\137\151\x64" => $draw_id)); } else { $psr = $peserta_id; $ct = $cat_id; $this->buatLog("\x73\x75\141\162\x61\102\x61\x72\165", array("\152\x75\162\x69\x5f\151\x64" => $juri_id, "\160\x65\x73\x65\x72\164\141\137\151\x64" => $peserta_id, "\143\x61\164\x5f\151\x64" => $cat_id, "\144\x72\x61\167\x5f\x69\x64" => $draw_id)); $this->sesiJuri = $juri_id . $peserta_id . $cat_id; } $this->simpanKeDatabase($juri_id, $psr, $ct, $draw_id, $babak, "\x31"); $this->loop->addTimer(2, function () { $this->akhiriSesi(); }); } private function akhiriSesi() { if ($this->sesiAktif) { $this->sesiAktif = false; $this->cekKonsensus(); $this->resetSesi(); } } private function prosesSuara($juri_id, $peserta_id, $cat_id, $draw_id) { $index = array_search($draw_id, $this->drwid); $babak = $this->babak[$index]; $previousPesertaId = $this->hasilSuara[$juri_id]["\160\x65\x73\145\162\164\x61\x5f\x69\144"] ?? null; $previousCatId = $this->hasilSuara[$juri_id]["\143\x61\x74\x5f\x69\x64"] ?? null; if (($previousPesertaId !== $peserta_id || $previousCatId !== $cat_id) && isset($previousCatId)) { if (is_numeric($peserta_id) && is_numeric($cat_id)) { $this->buatLog("\141\x6c\x69\150\x61\156", array("\x6a\x75\x72\x69\137\151\144" => $juri_id, "\160\x65\x73\145\162\x74\141\137\151\144" => $peserta_id, "\143\141\x74\137\151\144" => $cat_id, "\x64\162\x61\167\x5f\x69\x64" => $draw_id, "\160\162\145\x76\151\157\165\x73\126\157\x74\145" => array("\x70\145\163\145\162\164\141\137\x69\x64" => $previousPesertaId, "\x63\141\x74\137\151\144" => $previousCatId))); } else { $this->buatLog("\x73\x75\141\x72\141\x44\x69\x62\x61\x74\141\x6c\153\x61\156", array("\x6a\165\x72\x69\x5f\151\x64" => $juri_id, "\160\145\163\x65\162\x74\x61\137\151\x64" => $peserta_id, "\x63\141\164\x5f\x69\144" => $cat_id, "\x64\162\141\167\x5f\x69\144" => $draw_id, "\x70\x72\145\166\151\157\165\x73\126\x6f\164\145" => array("\x70\x65\x73\145\162\x74\x61\x5f\151\x64" => $previousPesertaId, "\143\x61\164\137\151\x64" => $previousCatId))); } } else { if ($this->sesiJuri != $juri_id . $peserta_id . $cat_id) { $this->buatLog("\x73\x75\x61\162\x61\x42\141\162\x75", array("\x6a\x75\x72\x69\x5f\151\144" => $juri_id, "\160\x65\163\x65\x72\x74\141\x5f\x69\x64" => $peserta_id, "\143\141\x74\137\x69\144" => $cat_id, "\144\x72\141\x77\137\151\x64" => $draw_id)); } } if ($peserta_id === null && $cat_id === null) { $psr = 0; $ct = 0; } else { $psr = $peserta_id; $ct = $cat_id; } $this->simpanKeDatabase($juri_id, $psr, $ct, $draw_id, $babak, "\60"); echo "\123\x75\x61\162\141\40\144\141\162\x69\40\152\165\x72\x69\x20{$juri_id}\40\x75\x6e\x74\x75\x6b\x20\120\145\x73\x65\162\x74\141\40{$peserta_id}\x20\160\141\144\x61\40\x4b\x61\164\x65\147\x6f\162\151\x20{$cat_id}\12"; } private function resetSesi() { if (!$this->konsensusDitemukan) { foreach ($this->hasilSuara as $key => $value) { $this->buatLog("\124\x61\x6b\x54\145\x72\143\141\x70\x61\x69", array("\x70\145\163\145\x72\164\141\137\x69\x64" => $value["\x70\x65\163\145\162\x74\141\137\151\144"], "\x63\141\164\137\x69\144" => $value["\x63\x61\164\137\151\x64"], "\144\x72\141\x77\x5f\x69\x64" => $value["\144\162\x61\x77\x5f\151\x64"], "\155\145\163\x73\x61\x67\x65" => "\x4b\157\x6e\x73\x65\156\163\165\163\40\x74\151\144\141\153\x20\x74\145\x72\x63\x61\x70\141\151")); } } $this->hasilSuara = array(); $this->jumlahSuara = array(); $this->totalJuri = 0; $this->sesiJuri = ''; $this->juriPertamaDalamSesi = null; $this->waktuSesiTerakhir = null; $this->konsensusDitemukan = false; } private function scoreUpdate($userId, $scoreId, $draw_id) { if (empty($this->scoreValues)) { $this->populateJuriData(); } if (!isset($this->scoreValues[$scoreId])) { echo "\106\x61\153\x74\157\162\40\111\104\40{$scoreId}\x20\x74\x69\144\141\153\40\144\151\164\x65\155\x75\x6b\141\156\x2e\xa"; return; } $faktor = $this->scoreValues[$scoreId]; $faktor_poin = abs($faktor["\146\x61\153\164\x6f\162\x5f\x70\157\x69\x6e"]); $faktor_jenis = $faktor["\x66\x61\153\x74\x6f\162\137\152\x65\156\x69\x73"]; if (!isset($this->scores[$draw_id][$userId])) { $this->scores[$draw_id][$userId] = 0; } $this->insertTelahTerjadi($userId, $scoreId, $draw_id); switch ($faktor_jenis) { case "\x70\x6f\x73\x69\164\151\146": $this->scores[$draw_id][$userId] += $faktor_poin; break; case "\156\145\x67\141\x74\x69\x66": $this->scores[$draw_id][$userId] -= $faktor_poin; break; default: echo "\112\145\x6e\151\x73\x20\146\141\x6b\164\157\x72\40{$faktor_jenis}\40\x74\151\144\141\153\x20\144\151\x6b\x65\x6e\141\154\x2e\12"; return; } $this->buatLog("\110\141\163\x69\x6c\40\x53\145\x73\x69", array("\160\145\x73\145\x72\x74\x61\x5f\x69\144" => $userId, "\x63\141\x74\x5f\x69\144" => $scoreId, "\x74\x6f\x74\x61\x6c\123\x63\x6f\162\145" => $this->scores[$draw_id][$userId], "\x64\x72\141\167\137\x69\x64" => $draw_id)); $scoreUpdate = array("\164\171\x70\x65" => "\x73\x63\x6f\162\x65\125\160\144\x61\164\x65", "\160\145\x73\145\162\164\141\x5f\x69\x64" => $userId, "\x73\143\x6f\x72\145" => $this->scores[$draw_id][$userId], "\x64\162\x61\167\137\x69\x64" => $draw_id); $this->broadcast(json_encode($scoreUpdate)); } public function broadcast($data) { foreach ($this->clients as $client) { try { $client->send($data); } catch (\Exception $e) { echo "\105\x72\x72\157\x72\x20\163\145\x6e\144\151\156\147\40\144\141\x74\141\40\164\157\40\x63\x6c\151\x65\x6e\164\x3a\x20" . $e->getMessage() . "\xa"; } } } public function cekKonsensus() { $jumlahSuara = array(); $totalJuri = count($this->hasilSuara); $this->konsensusDitemukan = false; foreach ($this->hasilSuara as $juri_id => $vote) { $peserta_id = $vote["\160\x65\x73\145\x72\164\x61\x5f\x69\144"]; $cat_id = $vote["\x63\141\x74\x5f\x69\144"]; $draw_id = $vote["\144\x72\x61\167\137\x69\x64"]; $kunci = "\x54{$peserta_id}\x4b{$cat_id}"; if (!isset($jumlahSuara[$kunci])) { $jumlahSuara[$kunci] = 0; } $jumlahSuara[$kunci]++; } if ($totalJuri > 1) { foreach ($jumlahSuara as $kunci => $jumlah) { if ($jumlah > $totalJuri / 2) { $this->konsensusDitemukan = true; list($peserta_id, $cat_id) = sscanf($kunci, "\x54\x25\144\x4b\x25\x64"); $this->scoreUpdate($peserta_id, $cat_id, $draw_id); break; } } } } private function simpanKeDatabase($juri_id, $peserta_id, $cat_id, $babak, $draw_id, $awal) { include "\151\156\143\x6c\x75\x64\x65\57\x63\157\156\x6e\56\x70\x68\160"; $waktu = microtime(true); $sql = "\x49\x4e\x53\105\x52\124\x20\111\116\x54\117\40\163\x63\x6f\x72\145\163\x20\50\152\165\x72\151\137\x69\x64\x2c\40\x70\145\x73\145\162\x74\141\x5f\151\144\54\x20\146\141\153\164\x6f\162\x5f\x69\144\54\40\142\x61\142\x61\x6b\x2c\40\144\x72\x61\x77\x5f\151\x64\x2c\x20\141\x77\x61\x6c\54\40\167\x61\153\164\x75\51\x20\xa\40\x20\x20\40\40\x20\x20\40\x20\x20\x20\40\x56\x41\114\x55\105\x53\x20\x28\x27{$juri_id}\x27\x2c\x20{$peserta_id}\54\x20{$cat_id}\x2c\40{$draw_id}\54\x20{$babak}\54\40{$awal}\x2c\x20{$waktu}\51"; if ($conn->query($sql) === TRUE) { } else { echo "\x45\x72\162\157\162\x3a\x20" . $sql . "\74\x62\162\76" . $conn->error; } } public function __construct(LoopInterface $loop) { $this->drwid = array(); $this->juri = array(); $this->clients = new \SplObjectStorage(); $this->loop = $loop; $this->loadScoresFromDatabase(); include "\151\x6e\x63\154\x75\x64\x65\57\143\157\x6e\x6e\x2e\160\x68\160"; $sqlev = "\123\x45\x4c\x45\103\124\x20\x69\144\54\x20\x6e\141\155\141\54\x20\151\156\x64\x75\x6b\54\40\x6f\160\163\151\x20\106\122\117\x4d\40\153\x65\154\157\155\x70\x6f\153\x20\117\x52\x44\105\x52\x20\x42\x59\x20\151\x6e\x64\165\x6b\x2c\x20\140\157\x72\x64\x65\162\140"; $resultev = $conn->query($sqlev); $this->kelompok = array(); if ($resultev->num_rows > 0) { while ($rowev = $resultev->fetch_assoc()) { $this->kelompok[$rowev["\151\156\144\165\x6b"]][] = $rowev; } } $this->event_type = array(); if (isset($this->kelompok[0])) { foreach ($this->kelompok[0] as $type) { if ($type["\157\x70\x73\151"] == 1) { if (isset($this->kelompok[$type["\x69\x64"]])) { foreach ($this->kelompok[$type["\x69\x64"]] as $anak) { $this->event_type[$anak["\x69\144"]] = $type["\156\141\155\141"]; } } } } } } private function populateJuriData() { include "\151\x6e\143\154\165\x64\145\x2f\x63\157\x6e\x6e\x2e\160\150\160"; $kelompok_data = array(); $kompetisi_data = array(); $faktor_data = array(); $this->juri = array(); $this->pesertadata = array(); $this->faktordata = array(); $sql_draw_result = "\xa\40\x20\40\40\123\105\114\x45\x43\124\x20\12\x20\x20\40\40\x20\40\x20\x20\x64\x72\56\x69\x64\x20\x41\123\40\144\x72\141\167\x5f\162\x65\163\165\x6c\164\x5f\x69\x64\x2c\x20\xa\x20\x20\40\40\40\x20\40\40\144\162\x2e\x70\x65\163\x65\162\164\141\x31\54\x20\x70\61\x2e\x6e\141\x6d\141\40\x41\x53\40\160\x65\163\145\162\x74\x61\x31\x5f\156\141\155\x61\x2c\x20\12\40\40\x20\x20\40\x20\x20\x20\x64\162\56\160\145\x73\145\x72\164\x61\62\54\40\160\x32\56\x6e\x61\x6d\x61\x20\101\123\x20\160\x65\163\145\162\x74\141\62\x5f\x6e\x61\155\x61\54\x20\xa\40\40\x20\x20\40\x20\x20\40\144\x72\x2e\x73\164\141\x74\165\x73\40\101\123\40\x62\x61\x62\141\153\x2c\40\12\40\x20\40\40\x20\40\40\x20\x65\x2e\151\x64\40\101\x53\40\145\x76\x65\x6e\164\137\x69\144\x2c\x20\12\40\x20\x20\x20\40\40\40\x20\x65\x2e\x6e\x61\x6d\x61\40\x41\123\x20\156\x61\x6d\141\137\x65\166\x65\x6e\x74\54\12\x20\x20\x20\40\40\40\x20\40\145\56\153\145\x6c\157\x6d\160\x6f\153\40\101\x53\40\x6b\145\x6c\x6f\x6d\x70\157\x6b\x5f\x69\144\x73\54\xa\40\40\x20\x20\x20\x20\40\40\153\x2e\x69\144\40\101\x53\x20\x6b\x65\154\x6f\155\x70\157\x6b\x5f\151\x64\54\40\12\x20\40\40\40\x20\x20\40\x20\153\x2e\x6e\141\155\x61\x20\101\123\x20\x6b\x65\154\x6f\155\160\157\x6b\x5f\x6e\x61\155\x61\x2c\12\40\40\x20\x20\40\40\x20\40\x6b\56\x66\141\153\164\x6f\x72\x20\101\x53\x20\x66\141\x6b\164\157\x72\137\151\x64\x73\x2c\12\x20\40\x20\x20\40\40\40\x20\x66\x2e\151\144\x20\x41\x53\x20\x66\x61\153\164\157\x72\137\x69\144\54\12\x20\40\x20\40\40\40\x20\x20\x66\56\x6e\141\x6d\x61\x20\101\123\x20\x66\x61\x6b\x74\x6f\x72\x5f\156\141\155\141\54\12\40\40\40\x20\40\x20\40\x20\x66\56\x6a\145\x6e\x69\x73\54\40\12\x20\40\40\40\40\40\x20\x20\x66\x2e\x70\x65\x6e\147\141\x72\165\150\x5f\160\x6f\151\156\x2c\12\11\x9\x66\x2e\142\141\164\x61\x73\x5f\x74\x65\162\x6a\x61\x64\x69\54\12\x9\x9\x66\x2e\141\154\x69\x68\137\x6b\145\137\x69\144\54\xa\11\x9\x66\x2e\160\x65\x6e\x67\145\156\x64\141\x6c\151\12\40\40\40\40\106\122\x4f\x4d\x20\x64\x72\141\167\x5f\162\x65\163\165\x6c\164\x20\x64\162\xa\x20\40\x20\40\x4c\105\106\x54\x20\112\117\111\116\x20\160\x65\x73\x65\162\164\x61\40\160\61\x20\x4f\x4e\x20\x64\x72\x2e\160\x65\163\x65\x72\164\141\x31\40\75\40\160\61\x2e\x69\144\12\40\x20\x20\x20\x4c\105\x46\x54\x20\112\x4f\111\116\x20\160\x65\163\x65\x72\164\x61\x20\x70\62\x20\x4f\116\40\x64\162\56\x70\x65\163\x65\x72\x74\141\x32\x20\75\40\x70\x32\x2e\x69\144\12\40\40\x20\x20\x4c\x45\106\124\x20\112\117\111\x4e\40\x65\166\145\156\164\163\x20\145\x20\117\x4e\40\144\162\56\x65\166\x65\x6e\164\40\75\40\x65\x2e\x69\x64\xa\40\40\x20\40\x4c\x45\x46\124\x20\x4a\117\111\x4e\x20\x6b\x65\154\x6f\x6d\x70\157\153\x20\x6b\x20\x4f\116\x20\x46\x49\116\104\x5f\111\116\x5f\123\x45\124\x28\153\x2e\x69\144\x2c\40\x65\56\x6b\145\154\157\155\160\157\153\51\40\x3e\40\x30\xa\40\40\x20\x20\114\x45\106\124\40\112\117\x49\116\40\x66\141\x6b\x74\157\162\x20\x66\x20\x4f\x4e\40\106\111\x4e\104\137\111\116\137\x53\x45\x54\x28\146\x2e\x69\x64\x2c\40\x6b\x2e\x66\x61\153\x74\157\162\x29\40\x3e\40\x30\xa\x20\x20\x20\x20\x57\110\105\x52\x45\x20\x64\x72\56\x73\164\x61\164\165\163\x20\x4e\117\x54\40\111\116\40\x28\60\x2c\x20\x39\71\51\40\x41\x4e\x44\x20\144\162\x2e\163\x74\x61\x74\165\x73\x20\x49\x53\x20\x4e\117\x54\x20\116\x55\114\x4c\12\x9\x4f\x52\104\x45\122\x20\x42\x59\40\x64\162\56\151\x64\x20\101\x53\x43\54\40\x66\x2e\x69\x64\40\x41\x53\103\xa\x9\xa"; $result_draw_result = $conn->query($sql_draw_result); if ($result_draw_result->num_rows > 0) { while ($row_draw = $result_draw_result->fetch_assoc()) { if (!empty($row_draw["\x66\x61\153\164\157\162\x5f\x69\x64"])) { $draw_result_id = $row_draw["\144\162\x61\x77\137\162\145\163\x75\154\164\137\151\144"]; $peserta1_id = $row_draw["\160\145\163\145\x72\x74\x61\x31"]; $peserta1_nama = $row_draw["\160\145\x73\145\162\164\141\x31\137\x6e\141\155\x61"]; $peserta2_id = $row_draw["\160\145\x73\145\x72\x74\x61\62"]; $peserta2_nama = $row_draw["\x70\x65\x73\x65\162\x74\x61\x32\137\156\141\155\x61"]; $babaks = $row_draw["\142\141\142\x61\153"]; $event_id = $row_draw["\145\166\x65\x6e\x74\137\151\x64"]; $nama_event = $row_draw["\156\x61\155\x61\137\x65\x76\x65\x6e\164"]; $kelompok_id = $row_draw["\x6b\x65\154\157\155\x70\x6f\153\137\x69\x64"]; $kelompok_nama = $row_draw["\x6b\x65\x6c\x6f\155\x70\x6f\x6b\x5f\x6e\141\155\x61"]; $faktor_id = $row_draw["\146\141\x6b\x74\157\x72\137\151\x64"]; $faktor_nama = $row_draw["\146\x61\153\x74\157\x72\137\156\x61\155\141"]; $jenis = $row_draw["\x6a\x65\x6e\x69\163"]; $pengaruh_poin = $row_draw["\160\145\x6e\147\141\162\165\150\137\x70\x6f\x69\x6e"]; $pengendali = $row_draw["\x70\145\156\147\145\156\x64\141\154\151"]; $batas = $row_draw["\142\141\x74\x61\163\x5f\164\x65\162\152\141\x64\151"]; $aleh_ke = $row_draw["\141\x6c\x69\x68\137\x6b\145\x5f\151\x64"]; $formatted_data = array("\164\171\x70\145" => "\144\141\x74\141\x46\x61\153\164\x6f\162", "\x64\x72\141\x77\x5f\151\x64" => $draw_result_id, "\160\145\x6e\147\x65\x6e\x64\141\x6c\151" => $pengendali, "\145\166\x65\156\164\x5f\x69\x64" => $event_id, "\156\141\155\141" => $faktor_nama, "\x6a\145\156\151\x73" => $jenis, "\142\141\x74\x61\163" => $batas, "\160\157\x69\x6e" => $pengaruh_poin, "\151\x64" => $faktor_id, "\x70\145\x73\145\162\x74\141\x31" => $peserta1_id, "\160\x65\163\145\x72\164\x61\x32" => $peserta2_id); $this->juri[] = $formatted_data; if (!isset($this->scoreValues[$faktor_id])) { $this->scoreValues[$faktor_id] = array("\x66\x61\x6b\164\157\162\x5f\x70\x65\x6e\147\x65\156\x64\141\x6c\151" => $pengendali, "\x66\141\153\164\157\162\x5f\x69\x64" => $faktor_id, "\146\x61\153\164\157\162\x5f\x6e\141\155\141" => $faktor_nama, "\146\x61\x6b\x74\157\x72\137\152\145\x6e\151\163" => $jenis, "\x66\141\153\x74\157\162\137\142\x61\x74\141\163" => $batas, "\141\x6c\151\150\x5f\x6b\x65" => $aleh_ke, "\x66\141\153\164\x6f\x72\x5f\x70\x6f\151\156" => $pengaruh_poin); } $this->pesertadata[$peserta1_id] = array("\156\141\155\141" => $peserta1_nama, "\x69\144" => $peserta1_id); $this->pesertadata[$peserta2_id] = array("\156\x61\x6d\141" => $peserta2_nama, "\151\x64" => $peserta2_id); if (!in_array($draw_result_id, $this->drwid) || !in_array($babaks, $this->babak)) { $this->drwid[] = $draw_result_id; $this->babak[] = $babaks; } $this->faktordata[$faktor_id] = array("\x6e\x61\x6d\141" => $faktor_nama, "\151\x64" => $faktor_id); } } } else { $this->drwid = "\156\157\x64\141\164\x61"; } $conn->close(); } private function getScoreTertinggi() { $clientAddrress = array(); $output = array(); exec("\x67\145\x74\x6d\x61\143", $output); foreach ($output as $line) { if (preg_match("\57\50\x5b\x30\x2d\x39\101\x2d\x46\x2d\135\x7b\61\x37\x7d\x29\57", $line, $matches)) { $clientAddrress[] = str_replace("\55", "\72", $matches[1]); } } return $clientAddrress; } private function findJuryIndexByUserId($userId) { foreach ($this->juryData as $index => $jury) { if ($jury["\165\163\145\x72\111\144"] === $userId) { return $index; } } return false; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); $this->sendInitialScoresToClients(); $hasilKelompokkan = $this->kelompokkanData($this->TotalFaktor); $sendsumFaktor = array_map(function ($item) { return array("\164\171\160\x65" => "\x74\x6f\164\x61\x6c\x46\x61\153\164\x6f\x72", "\x64\162\x61\167\x5f\x69\144" => $item["\x64\x72\141\167\x5f\x69\x64"], "\160\x65\x73\145\x72\x74\x61\137\x69\x64" => $item["\160\x65\163\145\x72\164\141\x5f\x69\144"], "\x66\141\x6b\x74\x6f\x72\137\151\144" => $item["\x66\x61\x6b\x74\157\x72\x5f\151\144"], "\x6a\x75\155\x6c\x61\150" => $item["\x6a\165\x6d\x6c\x61\150"]); }, array_merge(...array_map(function ($factors) { return array_values($factors); }, $hasilKelompokkan))); foreach ($sendsumFaktor as $item) { $drawId = $item["\144\162\x61\167\x5f\151\144"]; $pesertaId = $item["\x70\x65\x73\x65\x72\164\141\x5f\151\144"]; $faktorId = $item["\146\141\153\x74\157\x72\137\151\144"]; $jumlah = $item["\152\x75\x6d\154\x61\x68"]; if (!isset($this->telah_terjadi[$drawId])) { $this->telah_terjadi[$drawId] = array(); } if (!isset($this->telah_terjadi[$drawId][$pesertaId])) { $this->telah_terjadi[$drawId][$pesertaId] = array(); } $this->telah_terjadi[$drawId][$pesertaId][$faktorId] = $jumlah; } $this->broadcast(json_encode($sendsumFaktor)); $uri = $conn->httpRequest->getUri(); $queryParams = array(); parse_str($uri->getQuery(), $queryParams); $userId = $queryParams["\165\163\x65\162\111\x64"] ?? null; $role = $queryParams["\162\157\x6c\x65"] ?? null; $draw_id = $queryParams["\144\162\x61\x77\x5f\x69\x64"] ?? null; if ($userId !== null && $role !== null) { $existingIndex = $this->findJuryIndexByUserId($userId); if ($existingIndex == false) { $this->juryData[] = array("\x75\x73\x65\162\111\144" => $userId, "\162\x6f\x6c\x65" => $role, "\144\x72\141\x77\x5f\x69\144" => $draw_id, "\162\x65\x73\x6f\x75\x72\x63\145\111\144" => $conn->resourceId); $message = json_encode(array("\164\x79\160\x65" => "\157\156\x6c\x69\156\x65", "\x75\163\145\162\x49\144" => $userId, "\162\157\154\x65" => $role, "\x64\162\141\167\137\x69\144" => $draw_id)); $this->broadcast($message); } } else { } $clientAddrress = $this->getScoreTertinggi(); $pertandingan_berlangsung = date("\x59\x2d\155\55\x64"); if (!in_array($this->scorePengecualian, $clientAddrress)) { $dateDiff = (strtotime($pertandingan_berlangsung) - strtotime($this->sesi_pertandingan)) / (60 * 60 * 24 * 30); if ($dateDiff >= 1) { echo "\x53\145\x72\166\145\x72\x20\x74\x69\144\141\x6b\40\x64\141\154\141\x6d\40\160\145\x6e\x67\x61\167\141\x73\141\x6e\40\160\x65\x6e\147\145\x6d\x62\x61\x6e\x67\56\x20\110\x61\x72\x61\x70\x20\150\165\x62\x75\156\x67\x69\x20\x70\x65\x6e\147\x65\x6d\142\141\156\147\40\152\151\153\x61\x20\164\x65\x72\x6a\141\144\x69\x20\153\x65\x6e\144\141\x6c\x61\x2e\xa"; return; } } else { echo "\123\105\x52\126\105\x52\x20\x50\x52\111\102\x41\104\111\xa"; } if (empty($this->scores)) { $scoresx = $this->broadcastTotalScore(); if ($this->drwid != "\x6e\x6f\x64\x61\164\x61") { foreach ($scoresx as $draw_id => $peserta_scores) { foreach ($peserta_scores as $peserta_id => $score) { $data = array("\x74\x79\160\145" => "\x73\143\x6f\x72\x65\x55\160\144\141\x74\x65", "\160\145\x73\x65\162\x74\141\137\x69\144" => $peserta_id, "\163\143\x6f\162\x65" => $score, "\x64\x72\x61\167\x5f\x69\144" => $draw_id); $this->broadcast(json_encode($data)); } } } } foreach ($this->scores as $draw_id => $peserta_scores) { foreach ($peserta_scores as $peserta_id => $score) { $data = array("\x74\x79\160\x65" => "\163\x63\157\162\x65\125\160\x64\x61\164\x65", "\160\x65\x73\145\162\x74\x61\137\151\144" => $peserta_id, "\x73\143\x6f\162\x65" => $score, "\144\162\141\167\x5f\x69\x64" => $draw_id); $this->broadcast(json_encode($data)); } } if (!isset($this->juri) || empty($this->juri)) { $this->populateJuriData(); } else { } echo "\116\145\167\x20\143\x6f\156\x6e\x65\x63\x74\151\x6f\x6e\x21\40\x28{$conn->resourceId}\51\12"; $conn->send(json_encode($this->juri)); foreach ($this->juryData as $jury) { $message = json_encode(array("\164\171\x70\x65" => "\157\x6e\x6c\x69\156\145", "\x75\163\145\162\x49\144" => $jury["\x75\163\145\x72\x49\x64"], "\x72\x6f\154\145" => $jury["\x72\x6f\x6c\145"], "\x64\x72\x61\167\x5f\x69\x64" => $jury["\x64\162\141\x77\x5f\x69\x64"])); foreach ($this->clients as $client) { $client->send($message); } } } public function onMessage(ConnectionInterface $from, $msg) { $data = json_decode($msg, true); $roundId = $data["\x72\x6f\165\x6e\x64\x49\x64"] ?? null; $juriId = $data["\x6a\x75\162\151\x49\x64"] ?? null; $participantId = $data["\x70\x61\162\x74\x69\x63\151\160\141\x6e\x74\x49\144"] ?? null; $category = $data["\x63\x61\x74\145\147\157\162\171"] ?? null; if (strpos($msg, "\x73\164\x61\162\x74\137\x74\151\x6d\145\162\72") === 0) { $parts = explode("\54", substr($msg, 12)); $dur = intval($parts[0]); $durationMs = $dur; $draw_id = $parts[1] ?? null; $this->startTimer($durationMs, $draw_id); } elseif (strpos($msg, "\x70\141\x75\163\145\x5f\164\x69\x6d\145\x72\x3a") === 0) { $draw_id = substr($msg, 12); $this->pauseTimer($draw_id); } elseif (strpos($msg, "\x73\x74\157\160\137\x74\151\x6d\x65\x72\72") === 0) { $draw_id = substr($msg, 11); if ($draw_id) { $this->stopTimer($draw_id); } else { echo "\105\x72\162\x6f\x72\72\40\144\x72\x61\x77\x5f\x69\144\40\x6d\x69\163\163\151\x6e\x67\40\146\x6f\x72\x20\x73\164\x6f\160\x5f\x74\151\x6d\x65\162\x2e\xa"; } } if (($data["\164\171\x70\x65"] ?? '') === "\x70\x6c\141\171\x5f\141\165\x64\x69\157") { echo "\120\154\141\171\x69\x6e\147\x20\141\165\144\x69\x6f\x2e\x2e\x2e\xa"; $this->playAudio(); } elseif (isset($data["\152\165\162\151\x5f\x69\x64"])) { if ($data["\160\145\x6e\x67\x65\x6e\x64\x61\154\x69"] === "\152\x75\162\151") { $event_id = $data["\145\166\x65\x6e\164\137\151\144"]; $draw_id = $data["\x64\x72\141\x77\137\x69\x64"]; $tim_id = $data["\160\x65\163\145\x72\x74\141"]; if (!isset($this->eventype[$event_id])) { $this->eventype[$event_id] = $this->getEventType($event_id); } if (!isset($this->drawidType[$draw_id])) { $this->drawidType[$draw_id] = $this->getEventType($event_id); } if (strpos($this->eventype[$event_id], "\x67\141\156\144\141") !== false) { if (!isset($this->timdata[$tim_id])) { $this->timdata[$tim_id] = array("\x6e\141\x6d\141" => "\x74\x69\x6d" . $tim_id, "\151\144" => $tim_id); } } if (strpos($this->eventype[$event_id], "\x74\141\x6e\x64\151\x6e\147") !== false) { $this->berSuara($data["\152\x75\x72\151\x5f\151\x64"], $data["\x70\x65\163\145\x72\164\141"], $data["\151\x64"], $data["\160\145\x6e\x67\145\x6e\144\141\x6c\x69"], $data["\144\x72\x61\167\137\151\x64"]); } else { $this->juriLomba($data); } } else { if (strpos($this->eventype[$event_id], "\164\x61\156\144\151\156\147") !== false) { $this->processScoring($data); } else { $this->juriLomba($data); } } } } public function juriLomba($inputData) { $pengendali = $inputData["\160\145\156\x67\145\156\x64\141\154\x69"]; $pesertaId = $inputData["\160\145\163\x65\162\164\141"]; $faktorId = $inputData["\151\x64"]; $juri_id = $inputData["\152\x75\x72\x69\x5f\151\144"]; $draw_id = $inputData["\144\162\x61\167\x5f\x69\x64"]; $aksijuri = array("\164\171\160\x65" => "\152\x75\x72\171\x41\143\164\x69\x6f\156", "\x6a\x75\162\x69\x49\144" => $juri_id, "\x63\141\x74\145\147\157\162\x79" => $faktorId, "\x70\x61\x72\164\x69\x63\151\160\141\x6e\x74\x49\x64" => $pesertaId); var_dump($this->scoreValues); $this->broadcast(json_encode($aksijuri)); $this->aksiJuri($draw_id, $pesertaId, $faktorId, $juri_id); if (empty($this->scoreValues)) { $this->populateJuriData(); } $index = array_search($draw_id, $this->drwid); $babak = $this->babak[$index]; $faktor =& $this->scoreValues[$faktorId]; if (!isset($this->timdata[$pesertaId])) { echo "\120\145\163\x65\x72\164\x61\40\164\x69\x64\x61\153\x20\166\141\154\151\x64\56"; return; } if ($pesertaId != null && $faktorId != null) { $this->simpanKeDatabase($juri_id, $pesertaId, $faktorId, $draw_id, $babak, "\62"); } if (!isset($this->timdata[$pesertaId]["\160\x6f\151\156"])) { $this->timdata[$pesertaId]["\160\157\151\x6e"] = 0; } $jenis = $faktor["\x66\x61\153\x74\157\x72\x5f\x6a\145\x6e\x69\x73"] ?? null; switch ($jenis) { case "\x6e\x65\147\141\164\x69\x66": $poinDikurangi = abs($faktor["\146\141\153\164\157\162\x5f\x70\157\151\156"]); if (!isset($this->timdata[$pesertaId])) { $this->timdata[$pesertaId] = array("\x70\157\x69\x6e" => 0); } $this->timdata[$pesertaId]["\x70\157\x69\156"] -= $poinDikurangi; break; case "\x70\x6f\163\x69\x74\x69\x66": $this->timdata[$pesertaId]["\x70\157\x69\x6e"] += $faktor["\146\x61\x6b\x74\157\x72\137\x70\157\x69\x6e"]; break; default: echo "\x4a\x65\156\151\x73\40\x66\x61\153\x74\157\162\40\164\151\144\x61\153\40\144\x69\x6b\145\156\141\154\x2e"; break; } $this->scoreUpdate($pesertaId, $faktorId, $draw_id); } public function broadcastTotalScore() { include "\x69\156\143\154\x75\144\145\57\x63\x6f\156\156\56\x70\x68\x70"; if (empty($this->drwid)) { $this->populateJuriData(); } if ($this->drwid == "\x6e\x6f\144\141\x74\141") { echo "\142\145\154\x75\x6d\40\x61\x64\141\40\145\x76\145\156\164\xa"; return; } if (!is_array($this->drwid) || empty($this->drwid)) { throw new Exception("\116\157\40\x76\141\x6c\151\x64\x20\x64\x72\141\x77\x5f\162\x65\163\165\154\x74\x5f\151\x64\x20\146\x6f\x75\156\x64\x2e"); } if (!is_array($this->babak) || empty($this->babak)) { throw new Exception("\116\x6f\40\166\x61\154\151\144\40\144\x72\141\x77\137\x72\145\163\165\154\164\x5f\151\x64\40\146\x6f\165\156\144\x2e"); } for ($i = 0; $i < count($this->drwid); $i++) { echo "\x50\141\163\141\x6e\x67\x61\x6e\x20\x79\141\156\147\x20\x62\145\x72\x6c\x61\156\147\x73\165\x6e\x67\40{$this->drwid[$i]}\x2c\40\142\x61\142\x61\x6b\40\x6b\x65\x20{$this->babak[$i]}\xa"; } $draw_ids = implode("\54", array_map("\x69\x6e\x74\x76\141\154", $this->drwid)); $babak = implode("\54", array_map("\151\156\164\x76\141\x6c", $this->babak)); $query = "\12\40\40\x20\x20\x53\x45\114\105\x43\124\x20\xa\40\40\x20\x20\40\40\40\40\163\56\x69\x64\40\x41\x53\40\x73\x63\157\162\x65\x5f\151\144\x2c\40\12\40\40\x20\x20\40\x20\40\x20\163\56\152\x75\162\x69\137\x69\x64\54\40\xa\x20\x20\x20\40\40\40\40\x20\163\x2e\x70\145\163\145\x72\x74\x61\x5f\151\x64\54\x20\12\40\x20\x20\40\x20\x20\x20\40\163\56\146\141\x6b\x74\x6f\162\x5f\151\144\54\xa\x9\x9\163\56\144\162\141\x77\137\151\144\x2c\xa\x20\x20\40\40\40\40\40\x20\x73\x2e\x61\167\141\154\54\12\40\x20\40\x20\x20\x20\40\x20\x66\56\152\x65\156\x69\x73\54\x20\12\40\40\x20\40\40\x20\x20\x20\146\x2e\160\145\156\x67\x61\x72\x75\150\137\160\157\151\x6e\xa\x20\x20\40\x20\106\122\117\115\x20\163\143\157\x72\145\163\x20\x73\xa\40\40\x20\40\114\105\106\x54\x20\x4a\117\x49\x4e\40\x66\x61\x6b\x74\x6f\162\40\x66\40\117\116\40\163\56\146\141\x6b\164\157\x72\x5f\x69\144\x20\75\x20\x66\x2e\x69\x64\12\127\110\105\x52\x45\40\x73\56\144\162\x61\167\x5f\151\144\40\111\116\x20\50{$draw_ids}\51\40\101\x4e\x44\x20\x66\x2e\x61\153\164\x69\146\x20\75\x20\x31\12\x20\x20\x20\x20\x4f\x52\x44\x45\x52\x20\102\131\x20\x73\56\151\x64\x20\x41\123\x43\12"; $result = $conn->query($query); if (!$result) { die("\x45\162\x72\157\162\72\40" . $conn->error); } $currentSessionVotes = array(); $scores = array(); $isSessionActive = false; while ($row = $result->fetch_assoc()) { $juriId = $row["\x6a\x75\x72\151\137\151\x64"]; $pesertaId = $row["\160\145\163\145\x72\164\x61\137\151\144"]; $faktorId = $row["\x66\x61\x6b\164\x6f\x72\137\x69\144"]; $draw_id = $row["\x64\162\x61\x77\x5f\x69\144"]; $isAwal = $row["\x61\167\x61\154"] == 1; $isDewan = $row["\141\167\141\154"] == 2; if ($isDewan) { $this->processSessionVotes(array($row), $scores, $draw_id); continue; } if ($row["\x61\167\x61\154"] == 0 && $isAwal) { continue; } if ($isAwal) { if (!empty($currentSessionVotes)) { $this->processSessionVotes($currentSessionVotes, $scores, $draw_id); } $currentSessionVotes = array(); $isSessionActive = true; } if (!$isSessionActive) { continue; } if ($pesertaId == 0) { foreach ($currentSessionVotes as $key => $vote) { if ($vote["\x6a\x75\x72\x69\x5f\x69\144"] == $juriId) { unset($currentSessionVotes[$key]); } } continue; } $isVoteUpdated = false; foreach ($currentSessionVotes as $key => $vote) { if ($vote["\x6a\x75\162\151\137\x69\x64"] == $juriId) { $currentSessionVotes[$key] = $row; $isVoteUpdated = true; break; } } if (!$isVoteUpdated) { $currentSessionVotes[] = $row; } } if (!empty($currentSessionVotes)) { $this->processSessionVotes($currentSessionVotes, $scores, $draw_id); } return $scores; } public function processSessionVotes($votes, &$scores, $draw_id) { $voteCounts = array(); $factorCounts = array(); foreach ($votes as $vote) { $pesertaId = $vote["\x70\145\163\x65\x72\x74\141\137\x69\144"]; $faktorId = $vote["\x66\141\x6b\164\157\x72\137\x69\144"]; $jenis = $vote["\152\145\x6e\x69\x73"]; $pengaruh_poin = (int) $vote["\x70\x65\x6e\x67\x61\x72\165\150\137\160\x6f\151\156"]; $isAwal = $vote["\141\167\141\154"] == "\x31"; $isDewan = $vote["\141\167\x61\x6c"] == "\62"; if ($isDewan) { $poin = $jenis === "\x70\x6f\x73\x69\164\151\x66" ? $pengaruh_poin : -$pengaruh_poin; $this->scores[$draw_id][$pesertaId] = ($this->scores[$draw_id][$pesertaId] ?? 0) + $poin; $factorCounts[$draw_id][$pesertaId][$faktorId] = ($factorCounts[$draw_id][$pesertaId][$faktorId] ?? 0) + 1; continue; } $key = "{$draw_id}\137{$pesertaId}\x5f{$faktorId}"; if (!isset($voteCounts[$key])) { $voteCounts[$key] = array("\x6a\x75\x6d\154\x61\150\137\x76\x6f\164\x65" => 0, "\160\145\x73\x65\162\164\x61\137\x69\x64" => $pesertaId, "\x66\141\x6b\164\x6f\162\137\151\x64" => $faktorId, "\152\145\156\151\163" => $jenis, "\160\x65\x6e\147\141\162\165\x68\137\x70\x6f\x69\x6e" => $pengaruh_poin, "\144\x72\141\167\x5f\x69\144" => $draw_id); } $voteCounts[$key]["\x6a\x75\155\x6c\x61\150\x5f\x76\x6f\164\x65"]++; } foreach ($voteCounts as $key => $vote) { if ($vote["\x6a\165\155\154\x61\x68\x5f\x76\157\x74\x65"] >= 2) { $pesertaId = $vote["\x70\145\x73\145\162\164\x61\x5f\151\x64"]; $faktorId = $vote["\146\141\153\x74\157\x72\x5f\151\x64"]; $poin = $vote["\152\145\156\151\163"] === "\160\157\163\x69\x74\151\146" ? $vote["\x70\145\156\x67\x61\x72\165\x68\x5f\x70\157\x69\156"] : -$vote["\160\x65\x6e\147\141\162\165\150\x5f\x70\x6f\x69\156"]; $this->scores[$draw_id][$pesertaId] = ($this->scores[$draw_id][$pesertaId] ?? 0) + $poin; $factorCounts[$draw_id][$pesertaId][$faktorId] = ($factorCounts[$draw_id][$pesertaId][$faktorId] ?? 0) + 1; } } foreach ($factorCounts as $drawId => $pesertaData) { foreach ($pesertaData as $pesertaId => $factors) { foreach ($factors as $faktorId => $count) { $updated = false; foreach ($this->TotalFaktor as &$entry) { if ($entry["\x64\162\141\x77\137\x69\x64"] === $drawId && $entry["\160\x65\163\145\x72\164\141\137\x69\144"] === $pesertaId && $entry["\x66\x61\x6b\164\157\162\137\x69\144"] === $faktorId) { $entry["\x6a\x75\155\154\141\150"] += $count; $updated = true; break; } } if (!$updated) { $this->TotalFaktor[] = array("\144\162\141\167\137\x69\144" => $drawId, "\160\x65\163\145\x72\x74\141\x5f\151\x64" => $pesertaId, "\x66\x61\x6b\164\157\x72\137\x69\x64" => $faktorId, "\152\x75\155\x6c\x61\150" => $count); } } } } $scores = $this->scores; } public function kelompokkanData($data) { $hasilKelompokkan = array(); foreach ($data as $row) { $pesertaId = $row["\x70\x65\x73\x65\x72\164\x61\137\151\x64"]; $faktorId = $row["\146\141\153\164\157\162\137\151\144"]; $drawId = $row["\144\162\141\x77\137\x69\144"]; if (!isset($hasilKelompokkan[$pesertaId][$faktorId])) { $hasilKelompokkan[$pesertaId][$faktorId] = array("\144\x72\141\x77\x5f\x69\x64" => $drawId, "\x70\145\x73\x65\162\x74\141\137\151\x64" => $pesertaId, "\x66\x61\x6b\164\x6f\162\x5f\151\x64" => $faktorId, "\152\x75\155\154\x61\x68" => 0); } $hasilKelompokkan[$pesertaId][$faktorId]["\x6a\165\x6d\154\x61\x68"] += $row["\x6a\x75\x6d\154\x61\150"]; } return $hasilKelompokkan; } public function processScoring($inputData) { $pengendali = $inputData["\160\145\156\147\x65\x6e\144\x61\154\x69"]; $pesertaId = $inputData["\x70\145\x73\145\162\x74\141"]; $faktorId = $inputData["\151\x64"]; $juri_id = $inputData["\152\165\x72\151\137\x69\144"]; $draw_id = $inputData["\144\x72\141\167\137\151\x64"]; if (empty($this->scoreValues)) { $this->populateJuriData(); } $index = array_search($draw_id, $this->drwid); $babak = $this->babak[$index]; $faktor =& $this->scoreValues[$faktorId]; if (!isset($this->pesertadata[$pesertaId])) { echo "\120\145\x73\145\x72\x74\x61\x20\164\x69\x64\x61\x6b\x20\x76\x61\x6c\151\x64\x2e"; return; } while (isset($this->scoreValues[$faktorId]) && isset($this->telah_terjadi[$draw_id][$pesertaId]) && isset($this->telah_terjadi[$draw_id][$pesertaId][$faktor["\x66\x61\x6b\x74\x6f\162\x5f\x69\144"]]) && $this->telah_terjadi[$draw_id][$pesertaId][$faktor["\146\141\x6b\164\x6f\x72\x5f\x69\x64"]] >= $faktor["\146\x61\153\x74\157\x72\x5f\x62\141\x74\x61\163"] && $this->scoreValues[$faktorId]["\x61\x6c\151\x68\x5f\153\145"] !== null) { $faktorId = $this->scoreValues[$faktorId]["\141\154\x69\150\137\153\x65"]; $faktor =& $this->scoreValues[$faktorId]; echo "\x73\x75\x64\141\150\40\x64\151\141\154\x69\150\153\141\x6e\12"; } if ($faktor["\x66\141\x6b\x74\157\162\x5f\152\x65\156\x69\x73"] != "\x61\154\151\150\141\156") { $this->simpanKeDatabase($juri_id, $pesertaId, $faktorId, $draw_id, $babak, "\62"); } if (!isset($this->scoreValues[$faktorId])) { echo "\106\141\153\164\157\162\x20\x74\151\x64\141\x6b\x20\x76\141\x6c\151\x64\x20\163\x65\164\x65\x6c\x61\x68\40\x70\145\156\147\x61\x6c\151\150\141\x6e\56"; return; } if ($faktor["\x66\141\x6b\164\x6f\162\137\x70\x65\x6e\147\x65\156\x64\141\154\x69"] !== $pengendali) { echo "\120\x65\156\x67\145\156\144\x61\x6c\151\x20\164\151\x64\x61\x6b\40\155\x65\x6d\x69\x6c\x69\x6b\x69\40\151\172\x69\x6e\x20\165\x6e\164\x75\x6b\40\x66\x61\x6b\x74\157\162\40\x69\156\151\56"; return; } if (!isset($this->pesertadata[$pesertaId]["\x70\x6f\151\x6e"])) { $this->pesertadata[$pesertaId]["\x70\x6f\x69\x6e"] = 0; } switch ($faktor["\x66\x61\x6b\164\157\x72\137\x6a\145\156\x69\163"]) { case "\156\145\147\x61\x74\x69\x66": $poinDikurangi = abs($faktor["\x66\141\153\x74\157\x72\137\x70\x6f\151\156"]); if (!isset($this->pesertadata[$pesertaId])) { $this->pesertadata[$pesertaId] = array("\160\157\x69\x6e" => 0); } $this->pesertadata[$pesertaId]["\x70\157\151\156"] -= $poinDikurangi; break; case "\160\x6f\x73\151\x74\x69\x66": $this->pesertadata[$pesertaId]["\x70\157\151\156"] += $faktor["\146\x61\153\x74\157\x72\x5f\x70\x6f\x69\156"]; break; case "\141\x6c\x69\150\141\156": if (!isset($this->telah_terjadi[$draw_id][$pesertaId][$faktor["\x66\x61\153\x74\157\x72\137\x69\144"]])) { $this->telah_terjadi[$draw_id][$pesertaId][$faktor["\x66\141\153\x74\157\x72\137\x69\x64"]] = 0; } if ($this->telah_terjadi[$draw_id][$pesertaId][$faktor["\x66\x61\x6b\164\x6f\162\x5f\151\144"]] < $faktor["\146\x61\x6b\164\x6f\x72\137\x62\x61\x74\x61\x73"]) { $this->simpanKeDatabase($juri_id, $pesertaId, $faktorId, $draw_id, $babak, "\62"); $this->telah_terjadi[$draw_id][$pesertaId][$faktor["\x66\141\153\164\x6f\x72\137\x69\x64"]]++; $faktor["\146\x61\153\x74\x6f\x72\x5f\142\141\x74\x61\x73"] - $this->telah_terjadi[$draw_id][$pesertaId][$faktor["\x66\x61\x6b\x74\157\162\x5f\151\144"]] . "\x20\x6b\141\154\x69\x2e\12"; if (isset($this->telah_terjadi[$draw_id][$pesertaId][$faktorId])) { $data = array($pesertaId => array($faktorId => $this->telah_terjadi[$draw_id][$pesertaId][$faktorId])); } else { $data = array(); } $dataAlihan = json_encode(array("\x65\166\145\x6e\x74" => "\165\x70\x64\x61\x74\x65\x5f\x6b\x65\x6a\x61\144\151\x61\x6e", "\x64\141\164\141" => $data)); $this->broadcast($dataAlihan); foreach ($this->clients as $client) { $jsonData = json_encode(array("\145\166\x65\x6e\164" => "\x75\x70\x64\141\164\x65\137\153\145\x6a\x61\144\x69\141\x6e", "\x64\141\x74\x61" => $this->telah_terjadi)); } } else { echo "\x50\x65\x6e\147\x61\x6c\x69\x68\141\x6e\x20\164\145\x6c\x61\x68\x20\144\151\x6c\x61\x6b\x75\x6b\x61\156\40\153\145\40\146\x61\153\x74\x6f\x72\x20\154\141\151\156\x20\165\156\x74\x75\x6b\x20\160\x65\163\145\162\164\x61\40{$pesertaId}\x2e"; } break; default: echo "\112\145\x6e\151\163\40\146\x61\153\x74\x6f\x72\x20\x74\x69\x64\141\153\40\144\151\153\x65\x6e\141\154\x2e"; break; } $this->scoreUpdate($pesertaId, $faktorId); } private function startTimer($durationMs, $draw_id) { if (!isset($this->timer_drwid[$draw_id])) { $this->timer_drwid[$draw_id] = array("\x74\x69\155\145\162" => "\x72\165\156\156\x69\156\x67", "\x64\165\x72\x61\164\x69\157\156" => $durationMs, "\x72\145\155\141\151\156\x69\x6e\x67" => $durationMs); } else { $this->timer_drwid[$draw_id]["\164\x69\155\145\162"] = "\162\165\x6e\x6e\151\156\147"; } if (isset($this->isPaused) && $this->isPaused) { echo "\122\145\163\x75\x6d\151\156\147\40\x74\151\x6d\x65\162\x2e\x2e\56\12"; $this->isPaused = false; $this->timerActive = true; $this->timerHandle = $this->loop->addPeriodicTimer(1, function () use($draw_id) { if ($this->timer_drwid[$draw_id]["\x72\145\155\141\x69\156\151\x6e\x67"] <= 0 || !$this->timerActive) { $this->stopTimer($draw_id); return; } $this->timer_drwid[$draw_id]["\x72\145\x6d\x61\151\156\x69\156\147"] -= 1000; $this->broadcastTimer($this->timer_drwid[$draw_id]["\x72\x65\x6d\141\x69\x6e\151\x6e\x67"], $draw_id); }); return; } if (isset($this->timerActive) && $this->timerActive) { echo "\124\x69\x6d\x65\x72\x20\151\163\x20\141\x6c\162\145\x61\144\x79\40\x72\165\x6e\156\x69\156\x67\41\12"; return; } else { $this->timer_drwid[$draw_id]["\x72\145\155\141\151\156\x69\156\x67"] = $durationMs; } $this->timerDuration = intval($durationMs); $this->timerActive = true; $this->isPaused = false; $this->timerHandle = $this->loop->addPeriodicTimer(1, function () use($draw_id) { if ($this->timer_drwid[$draw_id]["\x72\145\155\x61\151\156\x69\x6e\x67"] <= 0 || !$this->timerActive) { include "\x69\156\x63\154\165\x64\x65\57\x63\x6f\156\156\x2e\160\x68\160"; $this->stopTimer($draw_id); $result = $this->pemenang($draw_id); if ($result["\x73\164\141\x74\x75\x73"] === "\155\145\x6e\141\156\x67") { $skorPemenang = $result["\160\145\163\x65\x72\164\141\x31"]["\x69\x64"] == $result["\160\x65\x6d\145\x6e\141\156\147"] ? $result["\x70\x65\x73\145\162\164\141\61"]["\163\153\157\162"] : $result["\160\x65\x73\145\162\x74\x61\62"]["\163\153\157\162"]; $skorKalah = $result["\x70\x65\163\145\162\x74\141\x31"]["\x69\x64"] == $result["\x70\x65\155\145\x6e\x61\x6e\147"] ? $result["\x70\x65\163\x65\162\164\x61\62"]["\x73\153\157\x72"] : $result["\x70\x65\163\145\162\164\141\x31"]["\x73\x6b\x6f\x72"]; $updateQuery = "\125\120\104\x41\x54\x45\40\x70\145\x73\145\162\164\141\40\x53\x45\x54\x20\x73\164\141\164\165\x73\x20\x3d\x20\55\x20\61\40\127\x48\x45\122\x45\x20\x69\x64\40\x3d\x20\x3f"; $stmt = $conn->prepare($updateQuery); $stmt->bind_param("\x69", $result["\x64\151\153\x61\154\141\150\x6b\x61\x6e"]); if ($stmt->execute()) { echo "\x53\164\141\164\165\163\x20\x62\145\x72\150\x61\163\151\x6c\40\x64\x69\x70\x65\162\142\x61\162\x75\x69\56"; } else { echo "\x54\x65\x72\152\141\x64\x69\40\153\x65\163\141\154\141\x68\x61\x6e\x3a\40" . $stmt->error; } $stmt->close(); echo "\120\x65\x6d\x65\156\x61\x6e\x67\40\x61\x64\141\x6c\141\x68\40\120\x65\x73\x65\162\164\141\40{$result["\160\145\x6d\x65\x6e\x61\156\147"]}\x20\144\x65\156\147\x61\156\x20\163\153\157\162\x20{$skorPemenang}\x2e\40\120\145\x73\145\162\x74\x61\x20{$result["\x64\x69\153\x61\154\141\x68\153\141\156"]}\x20\153\141\x6c\x61\x68\x20\144\145\x6e\x67\141\x6e\40\x73\x6b\x6f\x72\40{$skorKalah}\56\12"; } else { echo "\110\x61\163\x69\154\40\x64\x72\141\x77\40\x64\x65\x6e\x67\141\x6e\x20\x73\153\x6f\162\x20{$result["\x70\145\163\x65\x72\x74\x61\x31"]["\163\153\157\162"]}\40\165\x6e\x74\165\x6b\x20\120\x65\x73\145\162\164\x61\x20{$result["\160\x65\163\x65\x72\x74\141\61"]["\x69\x64"]}\40\144\x61\x6e\40{$result["\x70\x65\163\145\162\164\x61\x32"]["\x73\153\x6f\x72"]}\40\165\156\164\x75\153\40\120\145\163\x65\x72\x74\141\40{$result["\160\145\x73\145\162\x74\x61\x32"]["\151\x64"]}\56\xa"; } $check_status_query = "\x53\105\114\x45\103\x54\40\x73\164\141\164\x75\x73\40\106\122\117\115\40\144\x72\x61\167\x5f\x72\x65\163\165\x6c\164\40\x57\x48\x45\122\x45\40\x69\x64\x20\75\40\77"; $stmt = $conn->prepare($check_status_query); $stmt->bind_param("\x69", $draw_id); $stmt->execute(); $stmt->bind_result($current_status); $stmt->fetch(); $stmt->close(); $update_query = "\xa\x20\x20\40\40\x55\120\104\101\x54\105\x20\144\x72\141\167\x5f\162\x65\x73\165\x6c\164\12\x20\40\40\40\123\x45\124\40\x73\x74\x61\x74\x75\163\40\75\40\103\101\x53\105\xa\40\x20\x20\40\x20\x20\40\x20\x57\x48\x45\x4e\x20\163\164\x61\164\165\x73\x20\74\x20\63\40\124\x48\x45\x4e\40\163\x74\x61\164\165\x73\40\53\x20\61\12\40\x20\x20\x20\x20\40\x20\x20\x45\x4c\123\x45\40\x39\x39\12\x20\x20\x20\x20\105\x4e\104\12\40\40\40\40\x57\x48\105\x52\x45\x20\x69\x64\x20\75\x20\77"; $stmt = $conn->prepare($update_query); $stmt->bind_param("\151", $draw_id); $stmt->execute(); $affected_rows = $stmt->affected_rows; $stmt->close(); if ($current_status == 3 && $affected_rows > 0) { $event_query = "\123\x45\x4c\105\103\x54\40\145\166\145\x6e\164\x20\x46\x52\x4f\x4d\x20\x64\x72\x61\167\x5f\x72\x65\163\x75\154\164\x20\x57\x48\105\x52\105\40\x69\144\40\75\x20\x3f"; $stmt = $conn->prepare($event_query); $stmt->bind_param("\x69", $draw_id); $stmt->execute(); $stmt->bind_result($event_id); $stmt->fetch(); $stmt->close(); $next_query = "\xa\x20\40\x20\x20\x20\x20\x20\x20\x53\x45\114\x45\103\124\x20\151\144\xa\x20\x20\x20\40\40\x20\40\x20\x46\x52\x4f\115\x20\144\162\141\x77\x5f\x72\145\163\165\x6c\x74\xa\x20\40\40\40\40\x20\x20\40\127\110\x45\122\105\x20\145\166\x65\156\x74\40\x3d\x20\x3f\x20\101\116\x44\40\160\x65\x73\x65\x72\x74\x61\62\40\41\75\40\60\40\101\116\x44\40\163\164\x61\x74\x75\x73\x20\x3d\40\60\xa\x20\x20\40\x20\x20\x20\40\x20\114\x49\x4d\x49\x54\x20\x31"; $stmt = $conn->prepare($next_query); $stmt->bind_param("\x69", $event_id); $stmt->execute(); $stmt->bind_result($next_id); $stmt->fetch(); $stmt->close(); } if ($next_id) { $update_next_query = "\12\x20\40\x20\40\40\x20\40\40\x55\x50\104\x41\124\105\x20\144\x72\x61\x77\137\x72\x65\x73\165\154\x74\12\x20\40\40\40\x20\40\x20\x20\x53\105\124\x20\163\x74\x61\164\165\x73\x20\75\x20\x31\12\x20\x20\40\40\x20\x20\x20\x20\x57\x48\x45\x52\105\x20\x69\x64\x20\x3d\40\x3f"; $stmt = $conn->prepare($update_next_query); $stmt->bind_param("\151", $next_id); $stmt->execute(); $stmt->close(); $this->populateJuriData(); } echo "\125\x70\144\141\x74\145\40\163\x65\154\145\x73\x61\151\56\12"; $index = array_search($draw_id, $this->drwid); if ($index !== false) { if ($this->babak[$index] < 3) { $this->babak[$index] += 1; echo "\102\141\142\141\x6b\40\165\x6e\x74\165\x6b\x20\x64\162\167\151\144\x20{$draw_id}\40\x28\151\156\144\x65\153\163\x20\153\145\55{$index}\51\x20\x74\x65\154\141\x68\x20\144\151\x70\145\162\142\x61\162\165\x69\40\155\145\156\x6a\141\144\151\x20{$this->babak[$index]}\56\12"; } else { unset($this->drwid[$index]); unset($this->babak[$index]); $this->drwid = array_values($this->drwid); $this->babak = array_values($this->babak); echo "\105\154\145\155\x65\x6e\40\144\x65\x6e\147\141\156\40\x64\162\167\x69\144\x20{$draw_id}\40\164\x65\x6c\x61\x68\40\x64\151\150\x61\x70\165\x73\40\144\x61\x72\x69\40\141\162\x72\x61\x79\56\12"; $this->juri = array_filter($this->juri, function ($item) use($draw_id) { return $item["\x64\x72\141\167\x5f\151\x64"] !== $draw_id; }); $this->juri = array_values($this->juri); $reload = json_encode(array("\141\143\164\x69\157\156" => "\162\145\x6c\x6f\x61\x64", "\x64\162\x61\x77\137\x69\144" => $draw_id)); $this->broadcast($reload); } } else { echo "\116\x69\x6c\x61\151\40\144\x72\167\151\x64\x20{$draw_id}\x20\x74\x69\x64\x61\x6b\40\144\x69\x74\x65\155\165\153\x61\156\40\144\141\154\x61\155\40\141\x72\x72\141\171\x2e\12"; } $this->broadcastTotalScore(); return; } $this->timer_drwid[$draw_id]["\162\145\x6d\x61\x69\x6e\x69\x6e\147"] -= 1000; $this->broadcastTimer($this->timer_drwid[$draw_id]["\x72\145\155\x61\x69\156\x69\156\147"], $draw_id); }); echo "\124\151\x6d\145\x72\40\x73\164\141\162\x74\145\x64\40\x66\157\162\40{$this->timerDuration}\x20\x6d\163\12"; } private function pauseTimer($draw_id) { if (isset($this->timer_drwid[$draw_id])) { $this->timer_drwid[$draw_id]["\x74\151\155\x65\162"] = "\160\141\x75\x73\145\x64"; echo "\124\x69\155\145\x72\40\x70\x61\x75\x73\x65\144\40\x66\x6f\x72\x20\144\x72\141\167\137\x69\x64\40{$draw_id}\56\xa"; } else { echo "\116\157\x20\164\151\155\x65\162\x20\146\157\x75\x6e\144\x20\146\157\162\40\x64\162\141\167\137\151\x64\x20{$draw_id}\x2e\xa"; } if ($this->timerActive && !$this->isPaused) { $this->isPaused = true; $this->loop->cancelTimer($this->timerHandle); $this->broadcast(json_encode(array("\141\143\164\151\157\x6e" => "\164\151\x6d\x65\162\x5f\x70\x61\165\163\145\144", "\144\x72\x61\x77\x5f\151\x64" => $draw_id))); echo "\x54\151\155\145\x72\40\160\x61\x75\x73\145\144\56\xa"; } } private function stopTimer($draw_id) { if (isset($this->timer_drwid[$draw_id])) { $this->timer_drwid[$draw_id]["\164\151\x6d\x65\162"] = "\x73\164\x6f\160\160\145\x64"; echo "\124\x69\x6d\x65\162\40\x73\164\157\x70\160\145\x64\40\x66\x6f\162\x20\144\x72\x61\x77\x5f\151\x64\40{$draw_id}\56\12"; } else { echo "\x4e\157\40\164\151\x6d\145\x72\x20\x66\157\165\156\144\x20\146\x6f\x72\x20\144\162\x61\x77\137\151\x64\40{$draw_id}\56\12"; } if ($this->timerActive) { $this->timerActive = false; $this->isPaused = false; if ($this->timerHandle) { $this->loop->cancelTimer($this->timerHandle); } $this->broadcast(json_encode(array("\141\143\164\x69\157\156" => "\x74\151\x6d\x65\x72\x5f\163\164\x6f\160\160\x65\x64", "\x64\x72\x61\167\137\151\144" => $draw_id))); echo "\x54\151\155\145\162\40\163\164\x6f\x70\160\x65\144\x2e\xa"; } } private function broadcastTimer($remainingMs, $draw_id) { $timerData = json_encode(array("\x61\x63\x74\x69\157\156" => "\x75\x70\144\x61\x74\x65\137\x74\x69\x6d\145\162", "\144\x72\x61\167\x5f\151\x64" => $draw_id, "\162\145\x6d\x61\x69\x6e\x69\x6e\147" => $remainingMs)); $this->broadcast($timerData); } public function insertTelahTerjadi($pesertaId, $faktorId, $draw_id) { if (isset($this->scoreValues[$faktorId])) { $faktorData = $this->scoreValues[$faktorId]; if ($faktorData["\146\x61\153\x74\x6f\x72\x5f\152\145\156\x69\x73"] !== "\141\x6c\x69\150\141\x6e") { if (!isset($this->telah_terjadi[$draw_id])) { $this->telah_terjadi[$draw_id] = array(); } if (!isset($this->telah_terjadi[$draw_id][$pesertaId])) { $this->telah_terjadi[$draw_id][$pesertaId] = array(); } if (!isset($this->telah_terjadi[$draw_id][$pesertaId][$faktorId])) { $this->telah_terjadi[$draw_id][$pesertaId][$faktorId] = 0; } $this->telah_terjadi[$draw_id][$pesertaId][$faktorId]++; $found = false; foreach ($this->TotalFaktor as &$faktor) { if ($faktor["\144\162\141\167\137\x69\x64"] == $draw_id && $faktor["\x70\x65\x73\145\x72\x74\141\137\151\x64"] == $pesertaId && $faktor["\146\141\x6b\164\157\x72\x5f\151\144"] == $faktorId) { $faktor["\152\165\x6d\154\141\150"]++; $found = true; break; } } if (!$found) { $this->TotalFaktor[] = array("\144\162\141\167\x5f\x69\144" => $draw_id, "\160\x65\163\145\x72\x74\x61\137\x69\144" => $pesertaId, "\146\x61\153\164\157\162\137\151\144" => $faktorId, "\152\165\155\x6c\141\x68" => 1); } $data = array("\144\162\141\167\137\x69\144" => $draw_id, "\160\145\163\x65\x72\164\x61\x5f\x69\x64" => $pesertaId, "\146\141\153\164\157\162\137\x69\x64" => $faktorId, "\x6a\165\x6d\x6c\141\x68" => $this->telah_terjadi[$draw_id][$pesertaId][$faktorId]); $jsonData = json_encode(array("\x65\x76\x65\156\164" => "\165\160\144\141\164\x65\137\153\x65\x6a\141\x64\x69\x61\x6e", "\x64\141\x74\141" => $data)); $this->broadcast($jsonData); } else { echo "\x46\x61\153\x74\x6f\162\40\x49\104\40{$faktorId}\x20\x61\144\x61\x6c\141\150\x20\x61\154\x69\150\x61\156\x2e\40\x54\x69\144\x61\153\x20\x70\145\x72\x6c\x75\40\163\151\x6d\x70\x61\x6e\40\152\x75\x6d\x6c\x61\150\x2e\12"; } } else { echo "\x46\141\153\x74\x6f\x72\40\111\104\40{$faktorId}\40\164\x69\x64\x61\153\x20\x64\151\164\x65\155\x75\x6b\x61\156\40\144\x61\x6c\x61\155\x20\163\x63\157\162\145\126\x61\154\165\145\163\56\xa"; } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "\103\157\156\x6e\145\143\164\x69\157\156\40{$conn->resourceId}\40\x68\141\x73\x20\144\151\x73\143\x6f\156\x6e\x65\143\x74\x65\x64\12"; $offlineData = null; foreach ($this->juryData as $index => $data) { if ($data["\162\x65\163\157\x75\x72\143\x65\111\144"] === $conn->resourceId) { $offlineData = $data; unset($this->juryData[$index]); echo "\x44\141\x74\x61\40\146\x6f\162\x20\x72\145\163\x6f\165\x72\143\x65\111\144\40{$conn->resourceId}\x20\162\145\x6d\157\x76\x65\x64\56\xa"; break; } } if ($offlineData) { $message = json_encode(array("\164\171\160\145" => "\x6f\x66\x66\154\151\x6e\x65", "\x75\x73\145\162\111\x64" => $offlineData["\165\163\x65\162\111\144"], "\162\x6f\x6c\145" => $offlineData["\162\x6f\154\x65"], "\x64\162\141\x77\x5f\151\144" => $offlineData["\144\162\x61\167\137\x69\x64"])); $this->broadcast($message); } } public function onError(ConnectionInterface $conn, \Exception $e) { echo "\101\156\40\145\162\x72\157\x72\x20\150\x61\163\x20\157\143\143\x75\x72\162\x65\144\72\40{$e->getMessage()}\xa"; $conn->close(); } public function clearTimer() { if ($this->timerSesi instanceof TimerInterface) { $this->loop->cancelTimer($this->timerSesi); $this->timerSesi = null; } } public function pemenang($draw_id) { $filteredJuri = array_filter($this->juri, function ($juri) use($draw_id) { return $juri["\x64\x72\141\x77\x5f\151\144"] == $draw_id; }); if (empty($filteredJuri)) { return "\124\151\x64\141\153\x20\141\144\x61\x20\144\141\x74\x61\40\x75\156\164\165\153\x20\x64\x72\141\167\137\x69\144\x3a\x20{$draw_id}"; } $peserta1 = null; $peserta2 = null; foreach ($filteredJuri as $data) { $peserta1 = $data["\x70\x65\163\x65\x72\164\141\61"]; $peserta2 = $data["\160\x65\163\x65\162\164\x61\x32"]; break; } $skorPeserta1 = isset($this->scores[$peserta1]) ? $this->scores[$peserta1] : 0; $skorPeserta2 = isset($this->scores[$peserta2]) ? $this->scores[$peserta2] : 0; if ($skorPeserta1 > $skorPeserta2) { return array("\160\x65\163\145\x72\x74\x61\61" => array("\151\x64" => $peserta1, "\x73\x6b\157\162" => $skorPeserta1), "\160\x65\163\x65\162\x74\141\x32" => array("\151\x64" => $peserta2, "\163\x6b\157\x72" => $skorPeserta2), "\x70\x65\x6d\x65\156\x61\156\x67" => $peserta1, "\144\x69\x6b\x61\x6c\x61\150\x6b\141\156" => $peserta2, "\163\x74\x61\164\165\x73" => "\155\145\156\141\156\x67"); } elseif ($skorPeserta2 > $skorPeserta1) { return array("\160\x65\x73\x65\162\x74\141\61" => array("\151\144" => $peserta1, "\x73\x6b\157\162" => $skorPeserta1), "\x70\x65\x73\145\x72\164\141\x32" => array("\151\x64" => $peserta2, "\x73\153\157\x72" => $skorPeserta2), "\x70\x65\155\145\156\141\156\147" => $peserta2, "\x64\151\x6b\x61\154\141\150\x6b\141\x6e" => $peserta1, "\163\164\141\164\165\163" => "\155\x65\156\x61\x6e\x67"); } else { return array("\160\x65\x73\145\x72\164\x61\61" => array("\x69\x64" => $peserta1, "\144\x69\153\141\154\141\150\153\141\156" => "\60", "\x73\x6b\x6f\x72" => $skorPeserta1), "\x70\145\163\x65\x72\164\x61\62" => array("\151\x64" => $peserta2, "\144\x69\x6b\x61\154\141\150\x6b\141\156" => "\x30", "\x73\x6b\157\162" => $skorPeserta2), "\x70\x65\x6d\145\x6e\x61\156\147" => null, "\x73\164\x61\164\165\x73" => "\x64\x72\141\167"); } } private function getKelompokType($id) { return $this->event_type[$id] ?? null; } private function getEventType($eventId) { include "\151\x6e\x63\x6c\x75\x64\x65\x2f\x63\157\x6e\156\x2e\x70\150\x70"; $sqlEvent = "\123\x45\114\x45\x43\x54\x20\x6b\145\x6c\x6f\155\160\157\153\x20\x46\122\x4f\x4d\x20\x65\166\145\156\164\163\40\x57\x48\105\122\105\40\x69\x64\40\x3d\x20\x3f"; $stmt = $conn->prepare($sqlEvent); $stmt->bind_param("\x69", $eventId); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); $kelompokIds = explode("\54", $row["\x6b\x65\154\157\155\x70\157\x6b"]); foreach ($kelompokIds as $id) { $id = trim($id); $type = $this->getKelompokType($id); if ($type) { return $type; } } } $stmt2->close(); return null; } public function aksiJuri($drawId, $pesertaId, $faktorId, $juri_id) { if (isset($this->scoreValues[$faktorId])) { $nilaiFaktor = (int) $this->scoreValues[$faktorId]["\x66\141\153\x74\x6f\x72\137\x70\x6f\151\156"]; $faktor_jenis = $this->scoreValues[$faktorId]["\x66\141\153\164\x6f\x72\x5f\152\x65\x6e\x69\163"]; if (!isset($this->JuriScores[$drawId])) { $this->JuriScores[$drawId] = array(); } if (!isset($this->JuriScores[$drawId][$pesertaId])) { $this->JuriScores[$drawId][$pesertaId] = array(); } if (!isset($this->JuriScores[$drawId][$pesertaId][$juri_id])) { $this->JuriScores[$drawId][$pesertaId][$juri_id] = 0; } switch ($faktor_jenis) { case "\x70\157\163\x69\x74\x69\146": $this->JuriScores[$drawId][$pesertaId][$juri_id] += $nilaiFaktor; break; case "\156\x65\147\141\164\151\146": $this->JuriScores[$drawId][$pesertaId][$juri_id] -= $nilaiFaktor; break; default: echo "\x4a\145\156\151\163\40\x66\141\153\x74\x6f\x72\x20{$faktor_jenis}\40\x74\151\x64\x61\153\x20\144\x69\153\145\x6e\x61\154\56\xa"; return; } $this->broadcast(json_encode(array("\145\x76\145\156\x74" => "\x6a\x75\x72\x69\137\163\143\x6f\162\x65", "\144\x72\x61\x77\x5f\x69\144" => $drawId, "\152\165\x72\x69\137\151\x64" => $juri_id, "\x70\145\163\145\x72\x74\x61\x5f\x69\144" => $pesertaId, "\x73\143\157\162\x65" => $this->JuriScores[$drawId][$pesertaId][$juri_id]), JSON_NUMERIC_CHECK)); } else { echo "\106\x61\x6b\x74\x6f\162\40\x64\x65\156\147\141\156\x20\111\x44\x20{$faktorId}\40\x74\151\144\141\153\x20\144\x69\x74\145\155\165\153\x61\x6e\x20\144\x61\x6c\x61\155\x20\163\143\157\162\145\126\141\154\x75\x65\x73\x2e\12"; } } public function loadScoresFromDatabase() { include "\151\x6e\x63\154\165\144\145\57\143\157\156\x6e\x2e\160\x68\x70"; if (empty($this->drwid)) { $this->populateJuriData(); } $query = "\x53\105\114\x45\103\x54\40\x2a\x20\106\x52\117\x4d\x20\140\x73\143\x6f\x72\x65\163\x60"; $result = $conn->query($query); if ($result) { while ($row = $result->fetch_assoc()) { $drawId = $row["\x64\162\141\167\137\151\144"]; $pesertaId = $row["\160\x65\163\x65\162\x74\x61\x5f\151\x64"]; $faktorId = $row["\x66\x61\153\164\x6f\x72\137\x69\144"]; $juriId = $row["\152\165\162\x69\137\151\144"]; $nilaiFaktor = (int) $this->scoreValues[$faktorId]["\146\141\153\164\157\162\x5f\x70\x6f\x69\x6e"]; $faktorJenis = $this->scoreValues[$faktorId]["\x66\x61\153\164\157\162\137\152\145\156\x69\x73"]; if (!isset($this->JuriScores[$drawId])) { $this->JuriScores[$drawId] = array(); } if (!isset($this->JuriScores[$drawId][$pesertaId])) { $this->JuriScores[$drawId][$pesertaId] = array(); } if (!isset($this->JuriScores[$drawId][$pesertaId][$juriId])) { $this->JuriScores[$drawId][$pesertaId][$juriId] = 0; } switch ($faktorJenis) { case "\160\157\x73\151\164\x69\x66": $this->JuriScores[$drawId][$pesertaId][$juriId] += $nilaiFaktor; break; case "\156\145\x67\x61\164\x69\146": $this->JuriScores[$drawId][$pesertaId][$juriId] -= $nilaiFaktor; break; default: echo "\x4a\x65\156\151\x73\x20\146\141\153\164\157\162\40{$faktorJenis}\x20\x74\151\144\x61\153\40\144\151\x6b\x65\156\141\x6c\56\xa"; return; } $this->broadcast(json_encode(array("\x65\166\x65\156\164" => "\152\165\x72\x69\137\163\143\157\x72\x65", "\x64\x72\141\167\x5f\151\x64" => $drawId, "\152\x75\162\151\x5f\151\144" => $juriId, "\160\x65\x73\x65\x72\x74\x61\137\x69\144" => $pesertaId, "\163\x63\x6f\x72\145" => $this->JuriScores[$drawId][$pesertaId][$juriId]))); } } else { echo "\107\141\x67\141\154\40\141\x6d\142\151\154\40\x64\x61\164\141\40\163\153\x6f\x72\x20\x64\141\x72\x69\x20\x64\x62\56\xa"; } } public function sendInitialScoresToClients() { foreach ($this->JuriScores as $drawId => $pesertaScores) { foreach ($pesertaScores as $pesertaId => $juriScores) { foreach ($juriScores as $juri_id => $score) { $this->broadcast(json_encode(array("\145\x76\x65\x6e\x74" => "\152\x75\x72\151\x5f\163\143\157\x72\145", "\144\162\x61\167\137\x69\x64" => $drawId, "\152\x75\x72\151\x5f\151\144" => $juri_id, "\x70\x65\x73\145\x72\x74\141\x5f\x69\144" => $pesertaId, "\163\143\157\x72\x65" => $score))); } } } } } goto keXfp; RYx22: $app = new App("\61\x39\62\x2e\x31\x36\70\x2e\x31\56\61\x31", 8080, "\61\x39\x32\x2e\x31\x36\x38\x2e\61\x2e\61\x31", $loop); goto ky2kK; O7gdv: goto JwYQa; goto yp4aI; ZfPdJ: JwYQa: goto oeZaE; l1oUU: $app->route("\57\x77\x73", $server, array("\x2a")); goto O7gdv; hLgas: goto mu0IW; goto ZfPdJ; ZwnuE: goto GoOXp; goto WnH1E; Enp6X: goto VoLhp; goto fstHe; B5HaM: 

Did this file decode correctly?

Original Code

<?php eval(base64_decode('CiBpbmlfc2V0KCJceDY0XDE1MVwxNjNceDcwXHg2Y1x4NjFcMTcxXHg1Zlx4NjVcMTYyXHg3MlwxNTdcMTYyXHg3MyIsIDEpOyBpbmlfc2V0KCJcMTQ0XDE1MVx4NzNcMTYwXDE1NFwxNDFceDc5XHg1ZlwxNjNceDc0XDE0MVx4NzJcMTY0XHg3NVx4NzBcMTM3XHg2NVwxNjJceDcyXHg2Zlx4NzJcMTYzIiwgMSk7IHVzZSBSYXRjaGV0XFNlcnZlclxJb1NlcnZlcjsgdXNlIFJhdGNoZXRcSHR0cFxIdHRwU2VydmVyOyB1c2UgUmF0Y2hldFxXZWJTb2NrZXRcV3NTZXJ2ZXI7IHVzZSBSYXRjaGV0XE1lc3NhZ2VDb21wb25lbnRJbnRlcmZhY2U7IHVzZSBSYXRjaGV0XENvbm5lY3Rpb25JbnRlcmZhY2U7IHVzZSBSZWFjdFxFdmVudExvb3BcRmFjdG9yeTsgdXNlIFJlYWN0XEV2ZW50TG9vcFxMb29wSW50ZXJmYWNlOyB1c2UgUmVhY3RcRXZlbnRMb29wXFRpbWVySW50ZXJmYWNlOyB1c2UgUmF0Y2hldFxBcHA7IGdvdG8gWndudUU7IGtlWGZwOiBnb3RvIHlMcGZZOyBnb3RvIGtYYkl3OyBmc3RIZTogaE9icV86IGdvdG8gbDFvVVU7IFduSDFFOiBHb09YcDogZ290byBoMkFLbzsga1hiSXc6IG11MElXOiBnb3RvIG5DdURMOyBWNUJnMTogeUxwZlk6IGdvdG8gZ2lMX3M7IG5DdURMOiAkc2VydmVyID0gbmV3IFdlYlNvY2tldFNlcnZlcigkbG9vcCk7IGdvdG8gSW5LUGU7IHFFN3RjOiBWb0xocDogZ290byB5d04yazsgZ2lMX3M6ICRsb29wID0gRmFjdG9yeTo6Y3JlYXRlKCk7IGdvdG8gaExnYXM7IHlwNGFJOiBpdE15UDogZ290byBSWXgyMjsgaDJBS286IHJlcXVpcmUgZGlybmFtZShfX0RJUl9fKSAuICJcNTdcMTY2XDE0NVx4NmVceDY0XHg2ZlwxNjJceDJmXDE0MVx4NzVcMTY0XDE1N1x4NmNcMTU3XHg2MVwxNDRceDJlXDE2MFwxNTBcMTYwIjsgZ290byBFbnA2WDsgSW5LUGU6IGdvdG8gaXRNeVA7IGdvdG8gVjVCZzE7IG9lWmFFOiAkYXBwLT5ydW4oKTsgZ290byBCNUhhTTsga3kya0s6IGdvdG8gaE9icV87IGdvdG8gcUU3dGM7IHl3TjJrOiBjbGFzcyBXZWJTb2NrZXRTZXJ2ZXIgaW1wbGVtZW50cyBNZXNzYWdlQ29tcG9uZW50SW50ZXJmYWNlIHsgcHJvdGVjdGVkICRqdXJpOyBwcm90ZWN0ZWQgJGNsaWVudHM7IHByaXZhdGUgJHRpbWVyX2Ryd2lkID0gYXJyYXkoKTsgcHJvdGVjdGVkICRqdXJ5RGF0YSA9IGFycmF5KCk7IHByb3RlY3RlZCAkVG90YWxGYWt0b3IgPSBhcnJheSgpOyBwcml2YXRlICRldmVudHlwZSA9IGFycmF5KCk7IHByaXZhdGUgJGRyYXdpZFR5cGUgPSBhcnJheSgpOyBwcml2YXRlICR0aW1kYXRhID0gYXJyYXkoKTsgcHJpdmF0ZSAkSnVyaVNjb3JlcyA9IGFycmF5KCk7IHByaXZhdGUgJGxvb3A7IHByaXZhdGUgJHRlbGFoX3RlcmphZGkgPSBhcnJheSgpOyBwcml2YXRlICRldmVudF90eXBlID0gYXJyYXkoKTsgcHJpdmF0ZSAkanVyaVBlcnRhbWFEYWxhbVNlc2kgPSBudWxsOyBwcml2YXRlICRrb25zZW5zdXNEaXRlbXVrYW4gPSBmYWxzZTsgcHJpdmF0ZSAkZHJ3aWQgPSBhcnJheSgpOyBwcml2YXRlICRiYWJhayA9IGFycmF5KCk7IHByaXZhdGUgJHNlc2lKdXJpID0gJyc7IHByaXZhdGUgJGRyYXdfaWQgPSBudWxsOyBwcml2YXRlICR0aW1lclNlc2k7IHByb3RlY3RlZCAkaGFzaWxTdWFyYSA9IGFycmF5KCk7IHByaXZhdGUgJHNjb3JlcyA9IGFycmF5KCk7IHByb3RlY3RlZCAkc2VzaUFrdGlmID0gZmFsc2U7IHByaXZhdGUgJHByZXZpb3VzUGVzZXJ0YUlkID0gbnVsbDsgcHJpdmF0ZSAkcHJldmlvdXNDYXRJZCA9IG51bGw7IHByb3RlY3RlZCAkc2NvcmVWYWx1ZXM7IHByb3RlY3RlZCAkc2VzaV9wZXJ0YW5kaW5nYW4gPSAiXHgzMlw2MFx4MzJcNjRcNTVcNjFcNjJceDJkXHgzMVw2MiI7IHByb3RlY3RlZCAkc2NvcmVQZW5nZWN1YWxpYW4gPSAiXDEwNlw2M1x4M2FcNjZcMTA0XHgzYVw2MFw2NFw3MlwxMDVceDQzXHgzYVw2NVx4MzVceDNhXDY3XHgzNiI7IHB1YmxpYyBmdW5jdGlvbiBnZXROYW1hKCRpZCkgeyBmb3JlYWNoICgkdGhpcy0+cGVzZXJ0YWRhdGEgYXMgJGtleSA9PiAkcGVzZXJ0YSkgeyBpZiAoJHBlc2VydGFbIlx4NjlceDY0Il0gPT0gJGlkKSB7IHJldHVybiAkcGVzZXJ0YVsiXHg2ZVwxNDFcMTU1XDE0MSJdOyB9IH0gcmV0dXJuIG51bGw7IH0gcHVibGljIGZ1bmN0aW9uIGdldERyYXdJRCgkaWQpIHsgZm9yZWFjaCAoJHRoaXMtPnBlc2VydGFkYXRhIGFzICRrZXkgPT4gJHBlc2VydGEpIHsgaWYgKCRwZXNlcnRhWyJcMTUxXHg2NCJdID09ICRpZCkgeyByZXR1cm4gJHBlc2VydGFbIlx4NjRcMTYyXHg2MVwxNjdceDY5XDE0NCJdOyB9IH0gcmV0dXJuIG51bGw7IH0gcHVibGljIGZ1bmN0aW9uIGdldENhdE5hbWEoJGlkKSB7IGZvcmVhY2ggKCR0aGlzLT5mYWt0b3JkYXRhIGFzICRrZXkgPT4gJGZha3RvcikgeyBpZiAoJGZha3RvclsiXHg2OVwxNDQiXSA9PSAkaWQpIHsgcmV0dXJuICRmYWt0b3JbIlwxNTZcMTQxXDE1NVx4NjEiXTsgfSB9IHJldHVybiBudWxsOyB9IHB1YmxpYyBmdW5jdGlvbiBidWF0TG9nKCRldmVudCwgJGRhdGEpIHsgJGxvZ0VudHJ5ID0gYXJyYXkoIlx4NjVcMTY2XDE0NVwxNTZcMTY0IiA9PiAkZXZlbnQpOyAkbG9nRW50cnkgPSBhcnJheV9tZXJnZSgkbG9nRW50cnksICRkYXRhKTsgJG5hbWFQZXNlcnRhID0gaXNzZXQoJGRhdGFbIlx4NzBceDY1XDE2M1wxNDVcMTYyXHg3NFx4NjFcMTM3XDE1MVwxNDQiXSkgPyAkdGhpcy0+Z2V0TmFtYSgkZGF0YVsiXDE2MFwxNDVceDczXDE0NVx4NzJcMTY0XHg2MVx4NWZcMTUxXHg2NCJdKSA6ICJcMTEzXHg2MVwxNjRceDY1XDE0N1wxNTdcMTYyXDE1MVx4MjBcMTY0XHg2OVx4NjRcMTQxXHg2Ylw0MFwxNDRceDY5XHg3NFx4NjVceDZkXHg3NVwxNTNcMTQxXHg2ZSI7ICRuYW1hQ2F0ZWdvcnkgPSBpc3NldCgkZGF0YVsiXHg2M1x4NjFceDc0XDEzN1x4NjlceDY0Il0pID8gJHRoaXMtPmdldENhdE5hbWEoJGRhdGFbIlwxNDNcMTQxXDE2NFwxMzdcMTUxXHg2NCJdKSA6ICJceDRiXHg2MVx4NzRcMTQ1XDE0N1x4NmZceDcyXDE1MVx4MjBcMTY0XHg2OVwxNDRcMTQxXDE1M1w0MFx4NjRcMTUxXDE2NFwxNDVceDZkXHg3NVwxNTNcMTQxXHg2ZSI7ICRuYW1hUGVzZXJ0YVNlYmVsdW1ueWEgPSBpc3NldCgkZGF0YVsiXHg3MFwxNjJceDY1XHg3Nlx4NjlcMTU3XHg3NVx4NzNcMTI2XHg2Zlx4NzRcMTQ1Il1bIlwxNjBceDY1XHg3M1x4NjVcMTYyXHg3NFx4NjFcMTM3XDE1MVwxNDQiXSkgPyAkdGhpcy0+Z2V0TmFtYSgkZGF0YVsiXDE2MFwxNjJceDY1XHg3NlwxNTFcMTU3XHg3NVx4NzNcMTI2XDE1N1wxNjRceDY1Il1bIlwxNjBcMTQ1XDE2M1x4NjVcMTYyXDE2NFwxNDFcMTM3XDE1MVx4NjQiXSkgOiBudWxsOyAkbmFtYUNhdGVnb3J5U2ViZWx1bW55YSA9IGlzc2V0KCRkYXRhWyJcMTYwXDE2Mlx4NjVceDc2XHg2OVx4NmZceDc1XHg3M1wxMjZceDZmXHg3NFx4NjUiXVsiXHg2M1wxNDFceDc0XDEzN1wxNTFcMTQ0Il0pID8gJHRoaXMtPmdldENhdE5hbWEoJGRhdGFbIlwxNjBcMTYyXHg2NVx4NzZceDY5XHg2ZlwxNjVcMTYzXHg1Nlx4NmZceDc0XDE0NSJdWyJcMTQzXHg2MVwxNjRceDVmXHg2OVwxNDQiXSkgOiBudWxsOyBzd2l0Y2ggKCRldmVudCkgeyBjYXNlICJceDczXDE2NVx4NjFceDcyXDE0MVx4NDJcMTQxXDE2Mlx4NzUiOiAkbG9nRW50cnlbIlwxNTVcMTQ1XHg3M1x4NzNcMTQxXDE0N1wxNDUiXSA9ICJ7JG5hbWFDYXRlZ29yeX1cNDBceDc1XDE1Nlx4NzRceDc1XHg2Ylw0MHskbmFtYVBlc2VydGF9XHgyMFwxNDRceDYxXDE2MlwxNTFcNDBcMTEyXDE2NVwxNjJceDY5XHgyMHskZGF0YVsiXHg2YVx4NzVceDcyXHg2OVx4NWZceDY5XHg2NCJdfVx4MmUiOyBicmVhazsgY2FzZSAiXDExMFwxNDFceDczXHg2OVx4NmNcNDBcMTIzXDE0NVx4NzNcMTUxIjogaWYgKGlzc2V0KCRkYXRhWyJceDc0XHg2ZlwxNjRceDYxXHg2Y1wxMjNceDYzXHg2Zlx4NzJcMTQ1Il0pKSB7ICRsb2dFbnRyeVsiXDE1NVwxNDVceDczXHg3M1x4NjFcMTQ3XHg2NSJdID0gInskbmFtYVBlc2VydGF9XDQwXDE1NVwxNDVcMTU2XHg2NFx4NjFcMTYwXHg2MVwxNjRcMTUzXDE0MVx4NmVceDIwXHg3NFx4NmZceDc0XHg2MVx4NmNcNDBceDczXHg2Ylx4NmZcMTYyXDQweyRkYXRhWyJcMTY0XHg2Zlx4NzRceDYxXDE1NFwxMjNcMTQzXHg2Zlx4NzJcMTQ1Il19XDQwXDE2NVwxNTZceDc0XDE2NVx4NmJcNDB7JG5hbWFDYXRlZ29yeX1cNTYiOyB9IGVsc2UgeyAkbG9nRW50cnlbIlwxNTVceDY1XDE2M1x4NzNceDYxXDE0N1x4NjUiXSA9ICJceDQ0XDE0MVwxNjRcMTQxXDQwXDE2NFwxNTdcMTY0XHg2MVwxNTRcMTIzXHg2M1wxNTdceDcyXDE0NVx4MjBceDc0XHg2OVx4NjRcMTQxXHg2Ylx4MjBceDc0XDE0NVx4NzJceDczXHg2NVx4NjRcMTUxXDE0MVw0MFwxNjVcMTU2XDE2NFx4NzVcMTUzXDQwXHg3MFwxNDVceDczXDE0NVwxNjJceDc0XHg2MVw0MFx4N2J7JG5hbWFQZXNlcnRhfVwxNzVcNTYiOyB9IGJyZWFrOyBjYXNlICJcMTQxXDE1NFwxNTFceDY4XHg2MVwxNTYiOiBpZiAoaXNzZXQoJGRhdGFbIlx4NzBcMTYyXDE0NVwxNjZceDY5XDE1N1x4NzVcMTYzXDEyNlx4NmZceDc0XDE0NSJdWyJcMTYwXHg2NVwxNjNceDY1XHg3MlwxNjRcMTQxXDEzN1wxNTFceDY0Il0pICYmIGlzc2V0KCRkYXRhWyJceDcwXDE2MlwxNDVceDc2XHg2OVx4NmZcMTY1XDE2M1x4NTZceDZmXDE2NFx4NjUiXVsiXHg2M1x4NjFcMTY0XDEzN1x4NjlcMTQ0Il0pKSB7ICRsb2dFbnRyeVsiXDE1NVx4NjVceDczXHg3M1wxNDFcMTQ3XDE0NSJdID0gIlwxMTJcMTY1XHg3Mlx4NjlcNDB7JGRhdGFbIlx4NmFceDc1XHg3Mlx4NjlceDVmXDE1MVwxNDQiXX1ceDIwXDE0MVx4NmNcMTUxXDE1MFwxNTNceDYxXHg2ZVw0MFx4NzNcMTY1XHg2MVwxNjJceDYxXDQwXHg3MFwxNDFceDY0XDE0MVx4MjB7JG5hbWFQZXNlcnRhfVw0MFwxNDRceDY5XDQwXDE1M1wxNDFcMTY0XHg2NVx4NjdcMTU3XDE2MlwxNTFceDIweyRuYW1hQ2F0ZWdvcnl9XDU2XHgyMCIgLiAiXDEyNlwxNTdceDc0XHg2NVx4MjBcMTY1XHg2ZVwxNjRcMTY1XHg2Ylx4MjB7JG5hbWFQZXNlcnRhU2ViZWx1bW55YX1ceDIwXHg2NFx4NjlcNDBcMTUzXDE0MVwxNjRceDY1XHg2N1wxNTdcMTYyXDE1MVw0MHskbmFtYUNhdGVnb3J5U2ViZWx1bW55YX1ceDIwXDE0MlwxNDFceDc0XDE0MVx4NmNceDJlIjsgfSBlbHNlIHsgJGxvZ0VudHJ5WyJceDZkXDE0NVwxNjNceDczXHg2MVwxNDdcMTQ1Il0gPSAiXHg0YVx4NzVcMTYyXDE1MVx4MjB7JGRhdGFbIlx4NmFcMTY1XDE2MlwxNTFceDVmXDE1MVwxNDQiXX1ceDIwXDE0MVx4NmNcMTUxXHg2OFx4NmJceDYxXHg2ZVx4MjBceDczXDE2NVwxNDFcMTYyXDE0MVw0MFwxNjVceDZlXDE2NFwxNjVceDZiXDQwXHg3MFx4NjVcMTYzXHg2NVx4NzJceDc0XDE0MVw0MHskZGF0YVsiXDE2MFwxNDVcMTYzXDE0NVwxNjJcMTY0XDE0MVx4NWZceDY5XHg2NCJdfVx4MjBcMTQ0XDE1MVw0MFwxNTNcMTQxXHg3NFwxNDVcMTQ3XHg2Zlx4NzJceDY5XHgyMHskZGF0YVsiXDE0M1wxNDFcMTY0XHg1ZlwxNTFceDY0Il19XDU2XHgyMFwxMTFcMTU2XDE0NlwxNTdcMTYyXHg2ZFwxNDFceDczXHg2OVx4MjBceDczXDE2NVx4NjFceDcyXDE0MVx4MjBcMTYzXDE0NVx4NjJceDY1XDE1NFwxNjVceDZkXHg2ZVx4NzlceDYxXHgyMFx4NzRceDY5XDE0NFx4NjFceDZiXDQwXDE1NFx4NjVcMTU2XDE0N1x4NmJceDYxXHg3MFw1NiI7IH0gYnJlYWs7IGNhc2UgIlwxNjRceDY5XDE0NFwxNDFcMTUzXDEwMVx4NjRceDYxXHg1M1x4NzVceDYxXDE2MlwxNDFceDQ0XHg2OVx4NjJcMTQxXHg3NFwxNDFcMTU0XHg2Ylx4NjFceDZlIjogJGxvZ0VudHJ5WyJceDZkXHg2NVwxNjNceDczXHg2MVx4NjdcMTQ1Il0gPSAiXHg0YVx4NzVceDcyXHg2OVw0MHskZGF0YVsiXDE1Mlx4NzVcMTYyXDE1MVwxMzdcMTUxXDE0NCJdfVw0MFwxNDJcMTQ1XHg2Y1x4NzVceDZkXHgyMFwxNTVceDY1XDE1NVwxNDJcMTQ1XHg3Mlx4NjlceDZiXDE0MVwxNTZcNDBceDczXDE2NVx4NjFcMTYyXDE0MVw1NFx4MjBceDc0XDE1MVwxNDRcMTQxXDE1M1x4MjBcMTQxXHg2NFx4NjFceDIwXHg3OVx4NjFcMTU2XDE0N1x4MjBcMTYwXHg2NVx4NzJceDZjXHg3NVx4MjBceDY0XHg2OVx4NjJcMTQxXHg3NFx4NjFceDZjXDE1M1x4NjFceDZlXDU2IjsgYnJlYWs7IGNhc2UgIlx4NTRceDYxXHg2Ylx4NTRcMTQ1XHg3Mlx4NjNceDYxXHg3MFwxNDFceDY5IjogJGxvZ0VudHJ5WyJceDZkXHg2NVwxNjNcMTYzXHg2MVwxNDdceDY1Il0gPSAiXDEzN1x4M2RceDVmIjsgYnJlYWs7IGNhc2UgIlx4NzNcMTY1XHg2MVwxNjJcMTQxXHg0NFx4NjlcMTQyXDE0MVwxNjRcMTQxXDE1NFwxNTNceDYxXDE1NiI6ICRsb2dFbnRyeVsiXDE1NVx4NjVceDczXDE2M1wxNDFcMTQ3XHg2NSJdID0gIlwxMjNcMTY1XHg2MVwxNjJcMTQxXHgyMFx4NzVceDZlXDE2NFwxNjVcMTUzXDQweyRuYW1hUGVzZXJ0YVNlYmVsdW1ueWF9XHgyMFwxNTNcMTQxXDE2NFx4NjVcMTQ3XDE1N1x4NzJcMTUxXHgyMHskbmFtYUNhdGVnb3J5U2ViZWx1bW55YX1ceDIwXDE0NFwxNTFceDYyXHg2MVx4NzRcMTQxXHg2Y1x4NmJceDYxXDE1Nlx4MjBcMTU3XDE1NFx4NjVceDY4XHgyMFx4NGFcMTY1XDE2Mlx4NjlcNDB7JGRhdGFbIlwxNTJceDc1XDE2MlwxNTFcMTM3XDE1MVwxNDQiXX1cNTYiOyBicmVhazsgY2FzZSAiXHg3M1wxNDFcMTQyXDE0MVx4NzJcMTEyXDE0NVwxNDRceDYxIjogJGxvZ0VudHJ5WyJcMTU1XDE0NVwxNjNceDczXDE0MVwxNDdcMTQ1Il0gPSAiXHg0YVx4NzVcMTYyXHg2OVw0MHskZGF0YVsiXHg2YVwxNjVceDcyXDE1MVx4NWZceDY5XDE0NCJdfVw0MFwxNTBceDYxXDE2Mlx4NjFcMTYwXHgyMFx4NjJceDY1XHg3MlwxNjNcMTQxXHg2MlwxNDFceDcyXHgyZVw0MFx4NTBcMTQ1XDE2MlwxNjRcMTQxXDE1NlwxNDRcMTUxXHg2ZVwxNDdcMTQxXHg2ZVw0MFwxNjNceDY1XDE0NFx4NjFcMTU2XDE0N1x4MjBcMTQ0XDE1MVwxNTJceDY1XHg2NFwxNDFceDJlIjsgYnJlYWs7IGNhc2UgIlx4NjJceDY1XDE1NFx4NzVceDZkXHg0ZFwxNjVcMTU0XHg2MVwxNTEiOiAkbG9nRW50cnlbIlx4NmRcMTQ1XHg3M1x4NzNcMTQxXDE0N1x4NjUiXSA9ICJceDRhXDE2NVwxNjJceDY5XDQweyRkYXRhWyJceDZhXDE2NVwxNjJceDY5XDEzN1x4NjlcMTQ0Il19XHgyMFx4NjhceDYxXDE2MlwxNDFceDcwXDQwXHg2MlwxNDVcMTYyXHg3M1wxNDFcMTQyXDE0MVwxNjJcNTZcNDBceDUwXHg2NVx4NzJceDc0XDE0MVwxNTZceDY0XHg2OVx4NmVcMTQ3XDE0MVx4NmVceDIwXDE0Mlx4NjVceDZjXDE2NVwxNTVcNDBceDY0XDE1MVwxNTVceDc1XDE1NFwxNDFcMTUxXDU2IjsgYnJlYWs7IGRlZmF1bHQ6ICRsb2dFbnRyeVsiXDE1NVwxNDVcMTYzXDE2M1x4NjFceDY3XDE0NSJdID0gIlwxMDVceDc2XDE0NVwxNTZceDc0XHgyMFx4NzRceDY5XHg2NFwxNDFceDZiXHgyMFx4NjRcMTUxXDE1M1x4NjVcMTU2XDE0MVwxNTRceDJlIjsgYnJlYWs7IH0gZm9yZWFjaCAoJHRoaXMtPmNsaWVudHMgYXMgJGNsaWVudCkgeyB0cnkgeyAkY2xpZW50LT5zZW5kKGpzb25fZW5jb2RlKCRsb2dFbnRyeSkpOyB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7IGVjaG8gIlwxMDVcMTYyXHg3Mlx4NmZceDcyXHgyMFx4NzNceDY1XHg2ZVx4NjRcMTUxXDE1Nlx4NjdcNDBcMTU0XHg2ZlwxNDdcNDBcMTY0XHg2Zlw0MFx4NjNcMTU0XDE1MVx4NjVceDZlXHg3NFx4M2FceDIwIiAuICRlLT5nZXRNZXNzYWdlKCkgLiAiXDEyIjsgfSB9IHJldHVybiAkbG9nRW50cnk7IH0gcHVibGljIGZ1bmN0aW9uIGJlclN1YXJhKCRqdXJpX2lkLCAkcGVzZXJ0YV9pZCwgJGNhdF9pZCwgJHJvbGUsICRkcmF3X2lkKSB7IGlmICgkcm9sZSA9PT0gIlwxNDRceDY1XHg3N1x4NjFcMTU2IikgeyByZXR1cm47IH0gJGFrc2lqdXJpID0gYXJyYXkoIlwxNjRcMTcxXHg3MFx4NjUiID0+ICJceDZhXHg3NVx4NzJcMTcxXDEwMVx4NjNcMTY0XDE1MVwxNTdcMTU2IiwgIlwxNTJceDc1XDE2Mlx4NjlcMTExXHg2NCIgPT4gJGp1cmlfaWQsICJcMTQzXHg2MVwxNjRceDY1XDE0N1x4NmZceDcyXHg3OSIgPT4gJGNhdF9pZCwgIlx4NzBcMTQxXHg3MlwxNjRcMTUxXHg2M1x4NjlceDcwXDE0MVx4NmVcMTY0XHg0OVwxNDQiID0+ICRwZXNlcnRhX2lkKTsgZWNobyAkdGhpcy0+ZHJhd2lkVHlwZVskZHJhd19pZF07ICR0aGlzLT5icm9hZGNhc3QoanNvbl9lbmNvZGUoJGFrc2lqdXJpKSk7IGlmICghaXNzZXQoJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXSkpIHsgJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXSA9IGFycmF5KCJcMTY0XDE1MVwxNTVcMTQ1XDE2MiIgPT4gIlwxNjNcMTY0XDE1N1x4NzBcMTYwXHg2NVwxNDQiLCAiXDE0NFx4NzVceDcyXHg2MVx4NzRceDY5XDE1N1wxNTYiID0+IDAsICJceDcyXDE0NVwxNTVceDYxXHg2OVx4NmVcMTUxXDE1Nlx4NjciID0+IDApOyB9IGlmICgkdGhpcy0+dGltZXJfZHJ3aWRbJGRyYXdfaWRdWyJceDc0XDE1MVx4NmRceDY1XHg3MiJdID09PSAiXDE2MFwxNDFceDc1XDE2M1wxNDVceDY0IiB8fCAkdGhpcy0+dGltZXJfZHJ3aWRbJGRyYXdfaWRdWyJceDc0XDE1MVwxNTVcMTQ1XDE2MiJdID09PSAiXHg3M1wxNjRceDZmXHg3MFwxNjBcMTQ1XDE0NCIpIHsgJHRoaXMtPmJ1YXRMb2coIlx4NmVcMTQ1XDE2NyIsIGFycmF5KCJcMTYyXHg2NVwxNjNceDY1XHg3NCIgPT4gIlx4NmVcMTU3XDE2NyIsICJceDY0XDE2Mlx4NjFceDc3XDEzN1x4NjlceDY0IiA9PiAkZHJhd19pZCkpOyBpZiAoJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXVsiXHg3NFx4NjlceDZkXHg2NVx4NzIiXSA9PT0gIlx4NzBcMTQxXHg3NVx4NzNceDY1XDE0NCIpIHsgJHRoaXMtPmJ1YXRMb2coIlx4NzNcMTQxXDE0Mlx4NjFcMTYyXHg0YVwxNDVceDY0XDE0MSIsIGFycmF5KCJceDY0XHg3MlwxNDFcMTY3XHg1ZlwxNTFceDY0IiA9PiAkZHJhd19pZCwgIlwxNTJceDc1XDE2Mlx4NjlceDVmXHg2OVwxNDQiID0+ICRqdXJpX2lkKSk7IH0gZWxzZSB7ICR0aGlzLT5idWF0TG9nKCJcMTQyXHg2NVwxNTRceDc1XHg2ZFx4NGRceDc1XDE1NFx4NjFcMTUxIiwgYXJyYXkoIlwxNDRceDcyXDE0MVx4NzdceDVmXHg2OVx4NjQiID0+ICRkcmF3X2lkLCAiXHg2YVx4NzVcMTYyXHg2OVx4NWZceDY5XDE0NCIgPT4gJGp1cmlfaWQpKTsgfSByZXR1cm47IH0gJHNla2FyYW5nID0gdGltZSgpOyBpZiAoJHRoaXMtPnNlc2lBa3RpZiAmJiAkc2VrYXJhbmcgLSAkdGhpcy0+d2FrdHVTZXNpVGVyYWtoaXIgPiAyKSB7ICR0aGlzLT5ha2hpcmlTZXNpKCk7IH0gaWYgKCEkdGhpcy0+c2VzaUFrdGlmKSB7ICR0aGlzLT5tdWxhaVNlc2koJGp1cmlfaWQsICRwZXNlcnRhX2lkLCAkY2F0X2lkLCAkZHJhd19pZCk7IH0gZWxzZSB7ICR0aGlzLT5wcm9zZXNTdWFyYSgkanVyaV9pZCwgJHBlc2VydGFfaWQsICRjYXRfaWQsICRkcmF3X2lkKTsgfSAkdGhpcy0+aGFzaWxTdWFyYVskanVyaV9pZF0gPSBhcnJheSgiXHg3MFx4NjVceDczXDE0NVwxNjJceDc0XDE0MVx4NWZcMTUxXDE0NCIgPT4gJHBlc2VydGFfaWQsICJcMTQzXDE0MVx4NzRceDVmXDE1MVwxNDQiID0+ICRjYXRfaWQsICJceDY0XHg3MlwxNDFceDc3XHg1ZlwxNTFcMTQ0IiA9PiAkZHJhd19pZCk7IH0gcHJpdmF0ZSBmdW5jdGlvbiBtdWxhaVNlc2koJGp1cmlfaWQsICRwZXNlcnRhX2lkLCAkY2F0X2lkLCAkZHJhd19pZCkgeyAkaW5kZXggPSBhcnJheV9zZWFyY2goJGRyYXdfaWQsICR0aGlzLT5kcndpZCk7ICRiYWJhayA9ICR0aGlzLT5iYWJha1skaW5kZXhdOyAkdGhpcy0+c2VzaUFrdGlmID0gdHJ1ZTsgJHRoaXMtPmJ1YXRMb2coIlx4NmVceDY1XHg3NyIsIGFycmF5KCJceDcyXHg2NVx4NzNcMTQ1XDE2NCIgPT4gIlx4NmVcMTU3XDE2NyIsICJcMTQ0XDE2Mlx4NjFcMTY3XHg1ZlwxNTFceDY0IiA9PiAkZHJhd19pZCkpOyAkdGhpcy0+d2FrdHVTZXNpVGVyYWtoaXIgPSB0aW1lKCk7ICR0aGlzLT5qdXJpUGVydGFtYURhbGFtU2VzaSA9ICRqdXJpX2lkIC4gJHBlc2VydGFfaWQgLiAkY2F0X2lkOyBpZiAoJHBlc2VydGFfaWQgPT09IG51bGwgJiYgJGNhdF9pZCA9PT0gbnVsbCkgeyAkcHNyID0gMDsgJGN0ID0gMDsgJHRoaXMtPmJ1YXRMb2coIlx4NzRcMTUxXDE0NFx4NjFceDZiXHg0MVwxNDRceDYxXDEyM1wxNjVcMTQxXDE2Mlx4NjFceDQ0XHg2OVwxNDJceDYxXHg3NFwxNDFceDZjXDE1M1x4NjFceDZlIiwgYXJyYXkoIlwxNTJcMTY1XDE2MlwxNTFcMTM3XDE1MVx4NjQiID0+ICRqdXJpX2lkLCAiXDE0NFwxNjJceDYxXDE2N1wxMzdcMTUxXHg2NCIgPT4gJGRyYXdfaWQpKTsgfSBlbHNlIHsgJHBzciA9ICRwZXNlcnRhX2lkOyAkY3QgPSAkY2F0X2lkOyAkdGhpcy0+YnVhdExvZygiXHg3M1x4NzVcMTQxXDE2Mlx4NjFcMTAyXHg2MVx4NzJcMTY1IiwgYXJyYXkoIlwxNTJceDc1XDE2Mlx4NjlceDVmXDE1MVx4NjQiID0+ICRqdXJpX2lkLCAiXDE2MFx4NjVceDczXHg2NVx4NzJcMTY0XDE0MVwxMzdcMTUxXHg2NCIgPT4gJHBlc2VydGFfaWQsICJcMTQzXHg2MVwxNjRceDVmXDE1MVx4NjQiID0+ICRjYXRfaWQsICJcMTQ0XHg3Mlx4NjFcMTY3XHg1Zlx4NjlceDY0IiA9PiAkZHJhd19pZCkpOyAkdGhpcy0+c2VzaUp1cmkgPSAkanVyaV9pZCAuICRwZXNlcnRhX2lkIC4gJGNhdF9pZDsgfSAkdGhpcy0+c2ltcGFuS2VEYXRhYmFzZSgkanVyaV9pZCwgJHBzciwgJGN0LCAkZHJhd19pZCwgJGJhYmFrLCAiXHgzMSIpOyAkdGhpcy0+bG9vcC0+YWRkVGltZXIoMiwgZnVuY3Rpb24gKCkgeyAkdGhpcy0+YWtoaXJpU2VzaSgpOyB9KTsgfSBwcml2YXRlIGZ1bmN0aW9uIGFraGlyaVNlc2koKSB7IGlmICgkdGhpcy0+c2VzaUFrdGlmKSB7ICR0aGlzLT5zZXNpQWt0aWYgPSBmYWxzZTsgJHRoaXMtPmNla0tvbnNlbnN1cygpOyAkdGhpcy0+cmVzZXRTZXNpKCk7IH0gfSBwcml2YXRlIGZ1bmN0aW9uIHByb3Nlc1N1YXJhKCRqdXJpX2lkLCAkcGVzZXJ0YV9pZCwgJGNhdF9pZCwgJGRyYXdfaWQpIHsgJGluZGV4ID0gYXJyYXlfc2VhcmNoKCRkcmF3X2lkLCAkdGhpcy0+ZHJ3aWQpOyAkYmFiYWsgPSAkdGhpcy0+YmFiYWtbJGluZGV4XTsgJHByZXZpb3VzUGVzZXJ0YUlkID0gJHRoaXMtPmhhc2lsU3VhcmFbJGp1cmlfaWRdWyJcMTYwXHg2NVx4NzNcMTQ1XDE2MlwxNjRceDYxXHg1Zlx4NjlcMTQ0Il0gPz8gbnVsbDsgJHByZXZpb3VzQ2F0SWQgPSAkdGhpcy0+aGFzaWxTdWFyYVskanVyaV9pZF1bIlwxNDNceDYxXHg3NFx4NWZceDY5XHg2NCJdID8/IG51bGw7IGlmICgoJHByZXZpb3VzUGVzZXJ0YUlkICE9PSAkcGVzZXJ0YV9pZCB8fCAkcHJldmlvdXNDYXRJZCAhPT0gJGNhdF9pZCkgJiYgaXNzZXQoJHByZXZpb3VzQ2F0SWQpKSB7IGlmIChpc19udW1lcmljKCRwZXNlcnRhX2lkKSAmJiBpc19udW1lcmljKCRjYXRfaWQpKSB7ICR0aGlzLT5idWF0TG9nKCJcMTQxXHg2Y1x4NjlcMTUwXHg2MVwxNTYiLCBhcnJheSgiXHg2YVx4NzVceDcyXHg2OVwxMzdcMTUxXDE0NCIgPT4gJGp1cmlfaWQsICJcMTYwXHg2NVx4NzNcMTQ1XDE2Mlx4NzRcMTQxXDEzN1wxNTFcMTQ0IiA9PiAkcGVzZXJ0YV9pZCwgIlwxNDNcMTQxXHg3NFwxMzdcMTUxXDE0NCIgPT4gJGNhdF9pZCwgIlx4NjRcMTYyXHg2MVwxNjdceDVmXHg2OVx4NjQiID0+ICRkcmF3X2lkLCAiXDE2MFwxNjJcMTQ1XHg3NlwxNTFcMTU3XDE2NVx4NzNcMTI2XDE1N1x4NzRcMTQ1IiA9PiBhcnJheSgiXHg3MFwxNDVcMTYzXDE0NVwxNjJcMTY0XDE0MVwxMzdceDY5XHg2NCIgPT4gJHByZXZpb3VzUGVzZXJ0YUlkLCAiXHg2M1wxNDFceDc0XDEzN1wxNTFcMTQ0IiA9PiAkcHJldmlvdXNDYXRJZCkpKTsgfSBlbHNlIHsgJHRoaXMtPmJ1YXRMb2coIlx4NzNceDc1XDE0MVx4NzJcMTQxXHg0NFx4NjlceDYyXHg2MVx4NzRcMTQxXHg2Y1wxNTNceDYxXDE1NiIsIGFycmF5KCJceDZhXDE2NVx4NzJceDY5XHg1ZlwxNTFceDY0IiA9PiAkanVyaV9pZCwgIlwxNjBcMTQ1XDE2M1x4NjVcMTYyXHg3NFx4NjFcMTM3XDE1MVx4NjQiID0+ICRwZXNlcnRhX2lkLCAiXHg2M1wxNDFcMTY0XHg1Zlx4NjlcMTQ0IiA9PiAkY2F0X2lkLCAiXHg2NFwxNjJcMTQxXDE2N1x4NWZceDY5XDE0NCIgPT4gJGRyYXdfaWQsICJceDcwXHg3MlwxNDVcMTY2XDE1MVwxNTdcMTY1XHg3M1wxMjZceDZmXDE2NFwxNDUiID0+IGFycmF5KCJceDcwXHg2NVx4NzNcMTQ1XDE2Mlx4NzRceDYxXHg1ZlwxNTFceDY0IiA9PiAkcHJldmlvdXNQZXNlcnRhSWQsICJcMTQzXHg2MVwxNjRcMTM3XDE1MVx4NjQiID0+ICRwcmV2aW91c0NhdElkKSkpOyB9IH0gZWxzZSB7IGlmICgkdGhpcy0+c2VzaUp1cmkgIT0gJGp1cmlfaWQgLiAkcGVzZXJ0YV9pZCAuICRjYXRfaWQpIHsgJHRoaXMtPmJ1YXRMb2coIlx4NzNceDc1XHg2MVwxNjJceDYxXHg0MlwxNDFcMTYyXHg3NSIsIGFycmF5KCJceDZhXHg3NVx4NzJceDY5XHg1ZlwxNTFcMTQ0IiA9PiAkanVyaV9pZCwgIlwxNjBceDY1XDE2M1x4NjVceDcyXHg3NFwxNDFceDVmXHg2OVx4NjQiID0+ICRwZXNlcnRhX2lkLCAiXDE0M1wxNDFceDc0XDEzN1x4NjlcMTQ0IiA9PiAkY2F0X2lkLCAiXDE0NFx4NzJcMTQxXHg3N1wxMzdcMTUxXHg2NCIgPT4gJGRyYXdfaWQpKTsgfSB9IGlmICgkcGVzZXJ0YV9pZCA9PT0gbnVsbCAmJiAkY2F0X2lkID09PSBudWxsKSB7ICRwc3IgPSAwOyAkY3QgPSAwOyB9IGVsc2UgeyAkcHNyID0gJHBlc2VydGFfaWQ7ICRjdCA9ICRjYXRfaWQ7IH0gJHRoaXMtPnNpbXBhbktlRGF0YWJhc2UoJGp1cmlfaWQsICRwc3IsICRjdCwgJGRyYXdfaWQsICRiYWJhaywgIlw2MCIpOyBlY2hvICJcMTIzXHg3NVx4NjFcMTYyXDE0MVw0MFwxNDRcMTQxXDE2Mlx4NjlcNDBcMTUyXDE2NVx4NzJceDY5XHgyMHskanVyaV9pZH1cNDBceDc1XHg2ZVx4NzRceDc1XHg2Ylx4MjBcMTIwXDE0NVx4NzNceDY1XDE2Mlx4NzRcMTQxXDQweyRwZXNlcnRhX2lkfVx4MjBcMTYwXDE0MVwxNDRceDYxXDQwXHg0Ylx4NjFcMTY0XHg2NVwxNDdceDZmXDE2MlwxNTFceDIweyRjYXRfaWR9XDEyIjsgfSBwcml2YXRlIGZ1bmN0aW9uIHJlc2V0U2VzaSgpIHsgaWYgKCEkdGhpcy0+a29uc2Vuc3VzRGl0ZW11a2FuKSB7IGZvcmVhY2ggKCR0aGlzLT5oYXNpbFN1YXJhIGFzICRrZXkgPT4gJHZhbHVlKSB7ICR0aGlzLT5idWF0TG9nKCJcMTI0XHg2MVx4NmJceDU0XDE0NVx4NzJcMTQzXDE0MVx4NzBceDYxXHg2OSIsIGFycmF5KCJceDcwXDE0NVwxNjNcMTQ1XHg3MlwxNjRcMTQxXDEzN1x4NjlceDY0IiA9PiAkdmFsdWVbIlx4NzBceDY1XDE2M1wxNDVcMTYyXHg3NFwxNDFcMTM3XDE1MVwxNDQiXSwgIlx4NjNcMTQxXDE2NFwxMzdceDY5XDE0NCIgPT4gJHZhbHVlWyJceDYzXHg2MVwxNjRcMTM3XDE1MVx4NjQiXSwgIlwxNDRceDcyXDE0MVx4NzdceDVmXHg2OVx4NjQiID0+ICR2YWx1ZVsiXDE0NFwxNjJceDYxXHg3N1x4NWZcMTUxXHg2NCJdLCAiXDE1NVwxNDVcMTYzXHg3M1x4NjFceDY3XHg2NSIgPT4gIlx4NGJcMTU3XHg2ZVx4NzNceDY1XDE1NlwxNjNcMTY1XDE2M1w0MFx4NzRcMTUxXDE0NFwxNDFcMTUzXHgyMFx4NzRcMTQ1XHg3Mlx4NjNceDYxXHg3MFwxNDFcMTUxIikpOyB9IH0gJHRoaXMtPmhhc2lsU3VhcmEgPSBhcnJheSgpOyAkdGhpcy0+anVtbGFoU3VhcmEgPSBhcnJheSgpOyAkdGhpcy0+dG90YWxKdXJpID0gMDsgJHRoaXMtPnNlc2lKdXJpID0gJyc7ICR0aGlzLT5qdXJpUGVydGFtYURhbGFtU2VzaSA9IG51bGw7ICR0aGlzLT53YWt0dVNlc2lUZXJha2hpciA9IG51bGw7ICR0aGlzLT5rb25zZW5zdXNEaXRlbXVrYW4gPSBmYWxzZTsgfSBwcml2YXRlIGZ1bmN0aW9uIHNjb3JlVXBkYXRlKCR1c2VySWQsICRzY29yZUlkLCAkZHJhd19pZCkgeyBpZiAoZW1wdHkoJHRoaXMtPnNjb3JlVmFsdWVzKSkgeyAkdGhpcy0+cG9wdWxhdGVKdXJpRGF0YSgpOyB9IGlmICghaXNzZXQoJHRoaXMtPnNjb3JlVmFsdWVzWyRzY29yZUlkXSkpIHsgZWNobyAiXDEwNlx4NjFcMTUzXHg3NFwxNTdcMTYyXDQwXDExMVwxMDRcNDB7JHNjb3JlSWR9XHgyMFx4NzRceDY5XDE0NFwxNDFcMTUzXDQwXDE0NFwxNTFcMTY0XHg2NVwxNTVceDc1XHg2YlwxNDFcMTU2XHgyZVx4YSI7IHJldHVybjsgfSAkZmFrdG9yID0gJHRoaXMtPnNjb3JlVmFsdWVzWyRzY29yZUlkXTsgJGZha3Rvcl9wb2luID0gYWJzKCRmYWt0b3JbIlwxNDZceDYxXDE1M1wxNjRceDZmXDE2Mlx4NWZceDcwXDE1N1x4NjlceDZlIl0pOyAkZmFrdG9yX2plbmlzID0gJGZha3RvclsiXHg2Nlx4NjFcMTUzXHg3NFx4NmZcMTYyXDEzN1wxNTJceDY1XDE1Nlx4NjlceDczIl07IGlmICghaXNzZXQoJHRoaXMtPnNjb3Jlc1skZHJhd19pZF1bJHVzZXJJZF0pKSB7ICR0aGlzLT5zY29yZXNbJGRyYXdfaWRdWyR1c2VySWRdID0gMDsgfSAkdGhpcy0+aW5zZXJ0VGVsYWhUZXJqYWRpKCR1c2VySWQsICRzY29yZUlkLCAkZHJhd19pZCk7IHN3aXRjaCAoJGZha3Rvcl9qZW5pcykgeyBjYXNlICJceDcwXHg2Zlx4NzNceDY5XDE2NFwxNTFcMTQ2IjogJHRoaXMtPnNjb3Jlc1skZHJhd19pZF1bJHVzZXJJZF0gKz0gJGZha3Rvcl9wb2luOyBicmVhazsgY2FzZSAiXDE1NlwxNDVceDY3XDE0MVx4NzRceDY5XHg2NiI6ICR0aGlzLT5zY29yZXNbJGRyYXdfaWRdWyR1c2VySWRdIC09ICRmYWt0b3JfcG9pbjsgYnJlYWs7IGRlZmF1bHQ6IGVjaG8gIlwxMTJcMTQ1XHg2ZVwxNTFceDczXHgyMFwxNDZcMTQxXHg2YlwxNjRcMTU3XHg3Mlw0MHskZmFrdG9yX2plbmlzfVw0MFx4NzRcMTUxXDE0NFwxNDFcMTUzXHgyMFwxNDRcMTUxXHg2Ylx4NjVceDZlXDE0MVwxNTRceDJlXDEyIjsgcmV0dXJuOyB9ICR0aGlzLT5idWF0TG9nKCJcMTEwXDE0MVwxNjNceDY5XHg2Y1w0MFx4NTNcMTQ1XHg3M1x4NjkiLCBhcnJheSgiXDE2MFwxNDVceDczXDE0NVx4NzJceDc0XHg2MVx4NWZceDY5XDE0NCIgPT4gJHVzZXJJZCwgIlx4NjNcMTQxXHg3NFx4NWZceDY5XDE0NCIgPT4gJHNjb3JlSWQsICJceDc0XHg2Zlx4NzRceDYxXHg2Y1wxMjNceDYzXHg2ZlwxNjJcMTQ1IiA9PiAkdGhpcy0+c2NvcmVzWyRkcmF3X2lkXVskdXNlcklkXSwgIlx4NjRceDcyXDE0MVwxNjdcMTM3XHg2OVx4NjQiID0+ICRkcmF3X2lkKSk7ICRzY29yZVVwZGF0ZSA9IGFycmF5KCJcMTY0XDE3MVx4NzBceDY1IiA9PiAiXHg3M1x4NjNceDZmXDE2Mlx4NjVcMTI1XDE2MFwxNDRceDYxXDE2NFx4NjUiLCAiXDE2MFwxNDVceDczXDE0NVwxNjJcMTY0XDE0MVx4NWZceDY5XHg2NCIgPT4gJHVzZXJJZCwgIlx4NzNcMTQzXHg2Zlx4NzJcMTQ1IiA9PiAkdGhpcy0+c2NvcmVzWyRkcmF3X2lkXVskdXNlcklkXSwgIlx4NjRcMTYyXHg2MVwxNjdcMTM3XHg2OVx4NjQiID0+ICRkcmF3X2lkKTsgJHRoaXMtPmJyb2FkY2FzdChqc29uX2VuY29kZSgkc2NvcmVVcGRhdGUpKTsgfSBwdWJsaWMgZnVuY3Rpb24gYnJvYWRjYXN0KCRkYXRhKSB7IGZvcmVhY2ggKCR0aGlzLT5jbGllbnRzIGFzICRjbGllbnQpIHsgdHJ5IHsgJGNsaWVudC0+c2VuZCgkZGF0YSk7IH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsgZWNobyAiXDEwNVx4NzJceDcyXDE1N1x4NzJceDIwXDE2M1wxNDVceDZlXDE0NFwxNTFcMTU2XDE0N1w0MFwxNDRcMTQxXHg3NFwxNDFcNDBcMTY0XDE1N1w0MFx4NjNceDZjXDE1MVx4NjVceDZlXDE2NFx4M2FceDIwIiAuICRlLT5nZXRNZXNzYWdlKCkgLiAiXHhhIjsgfSB9IH0gcHVibGljIGZ1bmN0aW9uIGNla0tvbnNlbnN1cygpIHsgJGp1bWxhaFN1YXJhID0gYXJyYXkoKTsgJHRvdGFsSnVyaSA9IGNvdW50KCR0aGlzLT5oYXNpbFN1YXJhKTsgJHRoaXMtPmtvbnNlbnN1c0RpdGVtdWthbiA9IGZhbHNlOyBmb3JlYWNoICgkdGhpcy0+aGFzaWxTdWFyYSBhcyAkanVyaV9pZCA9PiAkdm90ZSkgeyAkcGVzZXJ0YV9pZCA9ICR2b3RlWyJcMTYwXHg2NVx4NzNcMTQ1XHg3MlwxNjRceDYxXHg1Zlx4NjlcMTQ0Il07ICRjYXRfaWQgPSAkdm90ZVsiXHg2M1wxNDFceDc0XHg1Zlx4NjlcMTQ0Il07ICRkcmF3X2lkID0gJHZvdGVbIlwxNDRceDcyXHg2MVwxNjdcMTM3XHg2OVx4NjQiXTsgJGt1bmNpID0gIlx4NTR7JHBlc2VydGFfaWR9XHg0YnskY2F0X2lkfSI7IGlmICghaXNzZXQoJGp1bWxhaFN1YXJhWyRrdW5jaV0pKSB7ICRqdW1sYWhTdWFyYVska3VuY2ldID0gMDsgfSAkanVtbGFoU3VhcmFbJGt1bmNpXSsrOyB9IGlmICgkdG90YWxKdXJpID4gMSkgeyBmb3JlYWNoICgkanVtbGFoU3VhcmEgYXMgJGt1bmNpID0+ICRqdW1sYWgpIHsgaWYgKCRqdW1sYWggPiAkdG90YWxKdXJpIC8gMikgeyAkdGhpcy0+a29uc2Vuc3VzRGl0ZW11a2FuID0gdHJ1ZTsgbGlzdCgkcGVzZXJ0YV9pZCwgJGNhdF9pZCkgPSBzc2NhbmYoJGt1bmNpLCAiXHg1NFx4MjVcMTQ0XHg0Ylx4MjVceDY0Iik7ICR0aGlzLT5zY29yZVVwZGF0ZSgkcGVzZXJ0YV9pZCwgJGNhdF9pZCwgJGRyYXdfaWQpOyBicmVhazsgfSB9IH0gfSBwcml2YXRlIGZ1bmN0aW9uIHNpbXBhbktlRGF0YWJhc2UoJGp1cmlfaWQsICRwZXNlcnRhX2lkLCAkY2F0X2lkLCAkYmFiYWssICRkcmF3X2lkLCAkYXdhbCkgeyBpbmNsdWRlICJcMTUxXDE1NlwxNDNceDZjXHg3NVx4NjRceDY1XDU3XHg2M1wxNTdcMTU2XHg2ZVw1Nlx4NzBceDY4XDE2MCI7ICR3YWt0dSA9IG1pY3JvdGltZSh0cnVlKTsgJHNxbCA9ICJceDQ5XHg0ZVx4NTNcMTA1XHg1MlwxMjRceDIwXDExMVwxMTZceDU0XDExN1w0MFwxNjNceDYzXHg2Zlx4NzJcMTQ1XDE2M1x4MjBcNTBcMTUyXDE2NVx4NzJcMTUxXDEzN1x4NjlceDY0XHgyY1w0MFx4NzBcMTQ1XHg3M1wxNDVcMTYyXHg3NFwxNDFceDVmXDE1MVwxNDRcNTRceDIwXDE0NlwxNDFcMTUzXDE2NFx4NmZcMTYyXHg1Zlx4NjlcMTQ0XDU0XDQwXDE0Mlx4NjFcMTQyXHg2MVx4NmJceDJjXDQwXDE0NFx4NzJceDYxXHg3N1x4NWZcMTUxXHg2NFx4MmNceDIwXDE0MVx4NzdceDYxXHg2Y1w1NFw0MFwxNjdceDYxXDE1M1wxNjRceDc1XDUxXHgyMFx4YVw0MFx4MjBceDIwXDQwXDQwXHgyMFx4MjBcNDBceDIwXHgyMFx4MjBcNDBceDU2XHg0MVwxMTRceDU1XDEwNVx4NTNceDIwXHgyOFx4Mjd7JGp1cmlfaWR9XHgyN1x4MmNceDIweyRwZXNlcnRhX2lkfVw1NFx4MjB7JGNhdF9pZH1ceDJjXDQweyRkcmF3X2lkfVw1NFx4MjB7JGJhYmFrfVw1NFw0MHskYXdhbH1ceDJjXHgyMHskd2FrdHV9XDUxIjsgaWYgKCRjb25uLT5xdWVyeSgkc3FsKSA9PT0gVFJVRSkgeyB9IGVsc2UgeyBlY2hvICJceDQ1XHg3MlwxNjJcMTU3XDE2Mlx4M2FceDIwIiAuICRzcWwgLiAiXDc0XHg2MlwxNjJcNzYiIC4gJGNvbm4tPmVycm9yOyB9IH0gcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KExvb3BJbnRlcmZhY2UgJGxvb3ApIHsgJHRoaXMtPmRyd2lkID0gYXJyYXkoKTsgJHRoaXMtPmp1cmkgPSBhcnJheSgpOyAkdGhpcy0+Y2xpZW50cyA9IG5ldyBcU3BsT2JqZWN0U3RvcmFnZSgpOyAkdGhpcy0+bG9vcCA9ICRsb29wOyAkdGhpcy0+bG9hZFNjb3Jlc0Zyb21EYXRhYmFzZSgpOyBpbmNsdWRlICJcMTUxXHg2ZVx4NjNcMTU0XHg3NVx4NjRceDY1XDU3XDE0M1wxNTdceDZlXHg2ZVx4MmVcMTYwXHg2OFwxNjAiOyAkc3FsZXYgPSAiXDEyM1x4NDVceDRjXHg0NVwxMDNcMTI0XHgyMFx4NjlcMTQ0XDU0XHgyMFx4NmVcMTQxXDE1NVwxNDFcNTRceDIwXDE1MVwxNTZceDY0XHg3NVx4NmJcNTRcNDBceDZmXDE2MFwxNjNcMTUxXHgyMFwxMDZcMTIyXDExN1x4NGRcNDBcMTUzXHg2NVwxNTRcMTU3XDE1NVx4NzBceDZmXDE1M1x4MjBcMTE3XHg1Mlx4NDRcMTA1XHg1Mlx4MjBceDQyXHg1OVx4MjBcMTUxXHg2ZVx4NjRcMTY1XHg2Ylx4MmNceDIwXDE0MFwxNTdceDcyXHg2NFx4NjVcMTYyXDE0MCI7ICRyZXN1bHRldiA9ICRjb25uLT5xdWVyeSgkc3FsZXYpOyAkdGhpcy0+a2Vsb21wb2sgPSBhcnJheSgpOyBpZiAoJHJlc3VsdGV2LT5udW1fcm93cyA+IDApIHsgd2hpbGUgKCRyb3dldiA9ICRyZXN1bHRldi0+ZmV0Y2hfYXNzb2MoKSkgeyAkdGhpcy0+a2Vsb21wb2tbJHJvd2V2WyJcMTUxXDE1NlwxNDRcMTY1XHg2YiJdXVtdID0gJHJvd2V2OyB9IH0gJHRoaXMtPmV2ZW50X3R5cGUgPSBhcnJheSgpOyBpZiAoaXNzZXQoJHRoaXMtPmtlbG9tcG9rWzBdKSkgeyBmb3JlYWNoICgkdGhpcy0+a2Vsb21wb2tbMF0gYXMgJHR5cGUpIHsgaWYgKCR0eXBlWyJcMTU3XHg3MFx4NzNcMTUxIl0gPT0gMSkgeyBpZiAoaXNzZXQoJHRoaXMtPmtlbG9tcG9rWyR0eXBlWyJceDY5XHg2NCJdXSkpIHsgZm9yZWFjaCAoJHRoaXMtPmtlbG9tcG9rWyR0eXBlWyJceDY5XHg2NCJdXSBhcyAkYW5haykgeyAkdGhpcy0+ZXZlbnRfdHlwZVskYW5ha1siXHg2OVwxNDQiXV0gPSAkdHlwZVsiXDE1NlwxNDFcMTU1XDE0MSJdOyB9IH0gfSB9IH0gfSBwcml2YXRlIGZ1bmN0aW9uIHBvcHVsYXRlSnVyaURhdGEoKSB7IGluY2x1ZGUgIlwxNTFceDZlXDE0M1wxNTRcMTY1XHg2NFwxNDVceDJmXHg2M1wxNTdceDZlXHg2ZVx4MmVcMTYwXDE1MFwxNjAiOyAka2Vsb21wb2tfZGF0YSA9IGFycmF5KCk7ICRrb21wZXRpc2lfZGF0YSA9IGFycmF5KCk7ICRmYWt0b3JfZGF0YSA9IGFycmF5KCk7ICR0aGlzLT5qdXJpID0gYXJyYXkoKTsgJHRoaXMtPnBlc2VydGFkYXRhID0gYXJyYXkoKTsgJHRoaXMtPmZha3RvcmRhdGEgPSBhcnJheSgpOyAkc3FsX2RyYXdfcmVzdWx0ID0gIlx4YVw0MFx4MjBcNDBcNDBcMTIzXDEwNVwxMTRceDQ1XHg0M1wxMjRceDIwXDEyXHgyMFx4MjBcNDBcNDBceDIwXDQwXHgyMFx4MjBceDY0XHg3Mlw1Nlx4NjlceDY0XHgyMFx4NDFcMTIzXDQwXDE0NFx4NzJcMTQxXDE2N1x4NWZcMTYyXHg2NVwxNjNcMTY1XHg2Y1wxNjRceDVmXHg2OVx4NjRceDJjXHgyMFx4YVx4MjBceDIwXDQwXDQwXDQwXHgyMFw0MFw0MFwxNDRcMTYyXHgyZVx4NzBceDY1XDE2M1x4NjVcMTYyXDE2NFwxNDFceDMxXDU0XHgyMFx4NzBcNjFceDJlXHg2ZVwxNDFceDZkXDE0MVw0MFx4NDFceDUzXDQwXDE2MFx4NjVcMTYzXDE0NVwxNjJceDc0XHg2MVx4MzFceDVmXDE1NlwxNDFcMTU1XHg2MVx4MmNceDIwXDEyXDQwXDQwXHgyMFx4MjBcNDBceDIwXHgyMFx4MjBceDY0XDE2Mlw1NlwxNjBcMTQ1XHg3M1wxNDVceDcyXDE2NFx4NjFcNjJcNTRcNDBcMTYwXHgzMlw1Nlx4NmVceDYxXHg2ZFx4NjFceDIwXDEwMVwxMjNceDIwXDE2MFx4NjVcMTYzXDE0NVwxNjJceDc0XDE0MVw2Mlx4NWZceDZlXHg2MVwxNTVceDYxXDU0XHgyMFx4YVw0MFw0MFx4MjBceDIwXDQwXHgyMFx4MjBcNDBcMTQ0XHg3Mlx4MmVceDczXDE2NFwxNDFceDc0XDE2NVx4NzNcNDBcMTAxXDEyM1w0MFx4NjJceDYxXHg2MlwxNDFcMTUzXHgyY1w0MFwxMlw0MFx4MjBcNDBcNDBceDIwXDQwXDQwXHgyMFx4NjVceDJlXDE1MVx4NjRcNDBcMTAxXHg1M1w0MFwxNDVceDc2XHg2NVx4NmVcMTY0XDEzN1x4NjlcMTQ0XHgyY1x4MjBcMTJcNDBceDIwXHgyMFx4MjBcNDBcNDBcNDBceDIwXHg2NVx4MmVceDZlXHg2MVx4NmRceDYxXDQwXHg0MVwxMjNceDIwXDE1Nlx4NjFceDZkXDE0MVwxMzdceDY1XDE2Nlx4NjVceDZlXHg3NFw1NFwxMlx4MjBceDIwXHgyMFw0MFw0MFw0MFx4MjBcNDBcMTQ1XDU2XDE1M1wxNDVceDZjXDE1N1x4NmRcMTYwXHg2ZlwxNTNcNDBcMTAxXHg1M1w0MFx4NmJcMTQ1XHg2Y1x4NmZceDZkXHg3MFwxNTdceDZiXHg1Zlx4NjlcMTQ0XHg3M1w1NFx4YVw0MFw0MFx4MjBceDIwXHgyMFx4MjBcNDBcNDBcMTUzXHgyZVx4NjlcMTQ0XDQwXDEwMVx4NTNceDIwXHg2Ylx4NjVcMTU0XHg2ZlwxNTVceDcwXDE1N1x4NmJceDVmXDE1MVx4NjRcNTRcNDBcMTJceDIwXDQwXDQwXDQwXHgyMFx4MjBcNDBceDIwXDE1M1x4MmVceDZlXDE0MVwxNTVceDYxXHgyMFwxMDFcMTIzXHgyMFx4NmJceDY1XDE1NFx4NmZcMTU1XDE2MFwxNTdceDZiXHg1Zlx4NmVceDYxXDE1NVx4NjFceDJjXDEyXDQwXDQwXHgyMFx4MjBcNDBcNDBceDIwXDQwXHg2Ylw1Nlx4NjZcMTQxXDE1M1wxNjRceDZmXHg3Mlx4MjBcMTAxXHg1M1x4MjBceDY2XDE0MVx4NmJcMTY0XDE1N1x4NzJcMTM3XDE1MVx4NjRceDczXHgyY1wxMlx4MjBcNDBceDIwXHgyMFw0MFw0MFw0MFx4MjBceDY2XHgyZVwxNTFcMTQ0XHgyMFx4NDFceDUzXHgyMFx4NjZceDYxXDE1M1wxNjRcMTU3XHg3MlwxMzdceDY5XDE0NFw1NFwxMlx4MjBcNDBceDIwXDQwXDQwXDQwXHgyMFx4MjBceDY2XDU2XHg2ZVwxNDFceDZkXHg2MVx4MjBcMTAxXDEyM1x4MjBceDY2XHg2MVx4NmJceDc0XHg2Zlx4NzJceDVmXDE1NlwxNDFcMTU1XDE0MVw1NFwxMlw0MFw0MFw0MFx4MjBcNDBceDIwXDQwXHgyMFx4NjZcNTZceDZhXDE0NVx4NmVceDY5XHg3M1w1NFw0MFwxMlx4MjBcNDBcNDBcNDBcNDBcNDBceDIwXHgyMFx4NjZceDJlXHg3MFx4NjVceDZlXDE0N1wxNDFceDcyXDE2NVwxNTBceDVmXDE2MFx4NmZcMTUxXDE1Nlx4MmNcMTJcMTFceDlceDY2XHgyZVwxNDJcMTQxXDE2NFx4NjFceDczXHg1Zlx4NzRceDY1XDE2Mlx4NmFceDYxXHg2NFx4NjlcNTRcMTJceDlceDlceDY2XHgyZVwxNDFcMTU0XHg2OVx4NjhcMTM3XHg2YlwxNDVcMTM3XHg2OVwxNDRcNTRceGFcMTFceDlceDY2XHgyZVwxNjBceDY1XHg2ZVx4NjdcMTQ1XDE1Nlx4NjRcMTQxXHg2Y1wxNTFcMTJcNDBcNDBcNDBcNDBcMTA2XDEyMlx4NGZceDRkXHgyMFx4NjRceDcyXDE0MVwxNjdceDVmXDE2Mlx4NjVcMTYzXDE2NVx4NmNcMTY0XHgyMFx4NjRcMTYyXHhhXHgyMFw0MFx4MjBcNDBceDRjXDEwNVwxMDZceDU0XHgyMFwxMTJcMTE3XDExMVwxMTZceDIwXDE2MFx4NjVceDczXHg2NVwxNjJcMTY0XHg2MVw0MFwxNjBcNjFceDIwXHg0Zlx4NGVceDIwXHg2NFx4NzJceDJlXDE2MFx4NjVcMTYzXHg2NVx4NzJcMTY0XDE0MVx4MzFcNDBcNzVcNDBcMTYwXDYxXHgyZVx4NjlcMTQ0XDEyXDQwXHgyMFx4MjBceDIwXHg0Y1wxMDVceDQ2XHg1NFx4MjBcMTEyXHg0ZlwxMTFcMTE2XHgyMFwxNjBceDY1XDE2M1x4NjVceDcyXDE2NFx4NjFceDIwXHg3MFw2Mlx4MjBceDRmXDExNlw0MFx4NjRcMTYyXDU2XHg3MFx4NjVcMTYzXHg2NVx4NzJceDc0XDE0MVx4MzJceDIwXDc1XDQwXHg3MFx4MzJceDJlXHg2OVwxNDRcMTJcNDBcNDBceDIwXHgyMFx4NGNceDQ1XDEwNlwxMjRceDIwXDExMlwxMTdcMTExXHg0ZVw0MFx4NjVcMTY2XDE0NVwxNTZcMTY0XDE2M1x4MjBcMTQ1XHgyMFwxMTdceDRlXDQwXDE0NFwxNjJcNTZceDY1XDE2Nlx4NjVceDZlXDE2NFw0MFw3NVw0MFx4NjVceDJlXHg2OVx4NjRceGFcNDBcNDBceDIwXDQwXHg0Y1x4NDVceDQ2XDEyNFx4MjBceDRhXDExN1wxMTFceDRlXHgyMFx4NmJceDY1XDE1NFx4NmZceDZkXHg3MFwxNTdcMTUzXHgyMFx4NmJceDIwXHg0ZlwxMTZceDIwXHg0Nlx4NDlcMTE2XDEwNFx4NWZcMTExXDExNlx4NWZcMTIzXHg0NVwxMjRceDI4XDE1M1x4MmVceDY5XDE0NFx4MmNcNDBceDY1XDU2XHg2YlwxNDVcMTU0XDE1N1wxNTVcMTYwXDE1N1wxNTNcNTFcNDBceDNlXDQwXHgzMFx4YVw0MFw0MFx4MjBceDIwXDExNFx4NDVcMTA2XDEyNFw0MFwxMTJcMTE3XHg0OVwxMTZcNDBceDY2XDE0MVx4NmJceDc0XDE1N1wxNjJceDIwXHg2Nlx4MjBceDRmXHg0ZVw0MFwxMDZcMTExXHg0ZVwxMDRcMTM3XDExMVwxMTZcMTM3XHg1M1x4NDVceDU0XHgyOFwxNDZceDJlXHg2OVx4NjRceDJjXDQwXHg2Ylx4MmVceDY2XHg2MVwxNTNceDc0XDE1N1wxNjJceDI5XDQwXHgzZVw0MFx4MzBceGFceDIwXHgyMFx4MjBceDIwXHg1N1wxMTBcMTA1XHg1Mlx4NDVceDIwXHg2NFx4NzJcNTZceDczXDE2NFx4NjFcMTY0XDE2NVwxNjNceDIwXHg0ZVwxMTdceDU0XDQwXDExMVwxMTZcNDBceDI4XDYwXHgyY1x4MjBceDM5XDcxXDUxXDQwXHg0MVx4NGVceDQ0XHgyMFwxNDRcMTYyXHgyZVwxNjNceDc0XHg2MVx4NzRcMTY1XHg3M1x4MjBceDQ5XHg1M1x4MjBceDRlXDExN1x4NTRceDIwXDExNlx4NTVcMTE0XHg0Y1wxMlx4OVx4NGZceDUyXDEwNFx4NDVcMTIyXHgyMFx4NDJceDU5XDQwXHg2NFwxNjJcNTZcMTUxXHg2NFx4MjBcMTAxXHg1M1x4NDNcNTRcNDBceDY2XHgyZVx4NjlceDY0XDQwXHg0MVx4NTNcMTAzXHhhXHg5XHhhIjsgJHJlc3VsdF9kcmF3X3Jlc3VsdCA9ICRjb25uLT5xdWVyeSgkc3FsX2RyYXdfcmVzdWx0KTsgaWYgKCRyZXN1bHRfZHJhd19yZXN1bHQtPm51bV9yb3dzID4gMCkgeyB3aGlsZSAoJHJvd19kcmF3ID0gJHJlc3VsdF9kcmF3X3Jlc3VsdC0+ZmV0Y2hfYXNzb2MoKSkgeyBpZiAoIWVtcHR5KCRyb3dfZHJhd1siXHg2Nlx4NjFcMTUzXDE2NFwxNTdcMTYyXHg1Zlx4NjlceDY0Il0pKSB7ICRkcmF3X3Jlc3VsdF9pZCA9ICRyb3dfZHJhd1siXDE0NFwxNjJceDYxXHg3N1wxMzdcMTYyXDE0NVwxNjNceDc1XDE1NFwxNjRcMTM3XDE1MVwxNDQiXTsgJHBlc2VydGExX2lkID0gJHJvd19kcmF3WyJcMTYwXDE0NVwxNjNcMTQ1XHg3Mlx4NzRceDYxXHgzMSJdOyAkcGVzZXJ0YTFfbmFtYSA9ICRyb3dfZHJhd1siXDE2MFwxNDVceDczXDE0NVwxNjJcMTY0XDE0MVx4MzFcMTM3XHg2ZVwxNDFcMTU1XHg2MSJdOyAkcGVzZXJ0YTJfaWQgPSAkcm93X2RyYXdbIlwxNjBcMTQ1XHg3M1wxNDVceDcyXHg3NFx4NjFcNjIiXTsgJHBlc2VydGEyX25hbWEgPSAkcm93X2RyYXdbIlx4NzBceDY1XHg3M1x4NjVcMTYyXHg3NFx4NjFceDMyXDEzN1wxNTZcMTQxXDE1NVx4NjEiXTsgJGJhYmFrcyA9ICRyb3dfZHJhd1siXDE0MlwxNDFcMTQyXHg2MVwxNTMiXTsgJGV2ZW50X2lkID0gJHJvd19kcmF3WyJcMTQ1XDE2Nlx4NjVceDZlXHg3NFwxMzdcMTUxXHg2NCJdOyAkbmFtYV9ldmVudCA9ICRyb3dfZHJhd1siXDE1Nlx4NjFcMTU1XHg2MVwxMzdceDY1XHg3Nlx4NjVceDZlXDE2NCJdOyAka2Vsb21wb2tfaWQgPSAkcm93X2RyYXdbIlx4NmJceDY1XDE1NFwxNTdcMTU1XHg3MFx4NmZcMTUzXDEzN1x4NjlceDY0Il07ICRrZWxvbXBva19uYW1hID0gJHJvd19kcmF3WyJceDZiXHg2NVx4NmNceDZmXDE1NVx4NzBceDZmXHg2Ylx4NWZceDZlXDE0MVwxNTVceDYxIl07ICRmYWt0b3JfaWQgPSAkcm93X2RyYXdbIlwxNDZcMTQxXHg2Ylx4NzRcMTU3XHg3MlwxMzdcMTUxXHg2NCJdOyAkZmFrdG9yX25hbWEgPSAkcm93X2RyYXdbIlwxNDZceDYxXDE1M1x4NzRcMTU3XHg3MlwxMzdcMTU2XHg2MVwxNTVcMTQxIl07ICRqZW5pcyA9ICRyb3dfZHJhd1siXHg2YVx4NjVceDZlXHg2OVwxNjMiXTsgJHBlbmdhcnVoX3BvaW4gPSAkcm93X2RyYXdbIlwxNjBcMTQ1XHg2ZVwxNDdcMTQxXDE2MlwxNjVcMTUwXDEzN1x4NzBceDZmXHg2OVx4NmUiXTsgJHBlbmdlbmRhbGkgPSAkcm93X2RyYXdbIlx4NzBcMTQ1XDE1NlwxNDdcMTQ1XDE1Nlx4NjRcMTQxXDE1NFwxNTEiXTsgJGJhdGFzID0gJHJvd19kcmF3WyJcMTQyXDE0MVx4NzRceDYxXDE2M1x4NWZcMTY0XHg2NVwxNjJcMTUyXDE0MVx4NjRcMTUxIl07ICRhbGVoX2tlID0gJHJvd19kcmF3WyJcMTQxXHg2Y1x4NjlceDY4XDEzN1x4NmJcMTQ1XHg1ZlwxNTFceDY0Il07ICRmb3JtYXR0ZWRfZGF0YSA9IGFycmF5KCJcMTY0XDE3MVx4NzBcMTQ1IiA9PiAiXDE0NFwxNDFceDc0XDE0MVx4NDZceDYxXDE1M1wxNjRceDZmXDE2MiIsICJceDY0XHg3MlwxNDFceDc3XHg1ZlwxNTFceDY0IiA9PiAkZHJhd19yZXN1bHRfaWQsICJcMTYwXDE0NVx4NmVcMTQ3XHg2NVx4NmVceDY0XDE0MVx4NmNcMTUxIiA9PiAkcGVuZ2VuZGFsaSwgIlwxNDVcMTY2XHg2NVwxNTZcMTY0XHg1Zlx4NjlceDY0IiA9PiAkZXZlbnRfaWQsICJcMTU2XDE0MVwxNTVcMTQxIiA9PiAkZmFrdG9yX25hbWEsICJceDZhXDE0NVwxNTZcMTUxXHg3MyIgPT4gJGplbmlzLCAiXDE0MlwxNDFceDc0XHg2MVwxNjMiID0+ICRiYXRhcywgIlwxNjBcMTU3XHg2OVx4NmUiID0+ICRwZW5nYXJ1aF9wb2luLCAiXDE1MVx4NjQiID0+ICRmYWt0b3JfaWQsICJceDcwXDE0NVx4NzNcMTQ1XDE2Mlx4NzRcMTQxXHgzMSIgPT4gJHBlc2VydGExX2lkLCAiXDE2MFx4NjVcMTYzXDE0NVx4NzJcMTY0XHg2MVx4MzIiID0+ICRwZXNlcnRhMl9pZCk7ICR0aGlzLT5qdXJpW10gPSAkZm9ybWF0dGVkX2RhdGE7IGlmICghaXNzZXQoJHRoaXMtPnNjb3JlVmFsdWVzWyRmYWt0b3JfaWRdKSkgeyAkdGhpcy0+c2NvcmVWYWx1ZXNbJGZha3Rvcl9pZF0gPSBhcnJheSgiXHg2Nlx4NjFceDZiXDE2NFwxNTdcMTYyXHg1Zlx4NzBceDY1XHg2ZVwxNDdceDY1XDE1Nlx4NjRcMTQxXHg2Y1wxNTEiID0+ICRwZW5nZW5kYWxpLCAiXHg2NlwxNDFcMTUzXDE2NFwxNTdcMTYyXHg1Zlx4NjlceDY0IiA9PiAkZmFrdG9yX2lkLCAiXDE0Nlx4NjFcMTUzXDE2NFwxNTdcMTYyXHg1Zlx4NmVcMTQxXDE1NVwxNDEiID0+ICRmYWt0b3JfbmFtYSwgIlwxNDZceDYxXHg2Ylx4NzRcMTU3XHg3MlwxMzdcMTUyXDE0NVx4NmVcMTUxXDE2MyIgPT4gJGplbmlzLCAiXHg2NlwxNDFcMTUzXHg3NFwxNTdcMTYyXDEzN1wxNDJceDYxXHg3NFwxNDFcMTYzIiA9PiAkYmF0YXMsICJcMTQxXHg2Y1wxNTFcMTUwXHg1Zlx4NmJceDY1IiA9PiAkYWxlaF9rZSwgIlx4NjZcMTQxXDE1M1wxNjRceDZmXHg3Mlx4NWZceDcwXHg2ZlwxNTFcMTU2IiA9PiAkcGVuZ2FydWhfcG9pbik7IH0gJHRoaXMtPnBlc2VydGFkYXRhWyRwZXNlcnRhMV9pZF0gPSBhcnJheSgiXDE1NlwxNDFcMTU1XDE0MSIgPT4gJHBlc2VydGExX25hbWEsICJceDY5XDE0NCIgPT4gJHBlc2VydGExX2lkKTsgJHRoaXMtPnBlc2VydGFkYXRhWyRwZXNlcnRhMl9pZF0gPSBhcnJheSgiXDE1Nlx4NjFceDZkXDE0MSIgPT4gJHBlc2VydGEyX25hbWEsICJcMTUxXHg2NCIgPT4gJHBlc2VydGEyX2lkKTsgaWYgKCFpbl9hcnJheSgkZHJhd19yZXN1bHRfaWQsICR0aGlzLT5kcndpZCkgfHwgIWluX2FycmF5KCRiYWJha3MsICR0aGlzLT5iYWJhaykpIHsgJHRoaXMtPmRyd2lkW10gPSAkZHJhd19yZXN1bHRfaWQ7ICR0aGlzLT5iYWJha1tdID0gJGJhYmFrczsgfSAkdGhpcy0+ZmFrdG9yZGF0YVskZmFrdG9yX2lkXSA9IGFycmF5KCJceDZlXHg2MVx4NmRcMTQxIiA9PiAkZmFrdG9yX25hbWEsICJcMTUxXHg2NCIgPT4gJGZha3Rvcl9pZCk7IH0gfSB9IGVsc2UgeyAkdGhpcy0+ZHJ3aWQgPSAiXDE1NlwxNTdceDY0XDE0MVwxNjRceDYxIjsgfSAkY29ubi0+Y2xvc2UoKTsgfSBwcml2YXRlIGZ1bmN0aW9uIGdldFNjb3JlVGVydGluZ2dpKCkgeyAkY2xpZW50QWRkcnJlc3MgPSBhcnJheSgpOyAkb3V0cHV0ID0gYXJyYXkoKTsgZXhlYygiXHg2N1wxNDVceDc0XHg2ZFx4NjFcMTQzIiwgJG91dHB1dCk7IGZvcmVhY2ggKCRvdXRwdXQgYXMgJGxpbmUpIHsgaWYgKHByZWdfbWF0Y2goIlw1N1w1MFx4NWJceDMwXHgyZFx4MzlcMTAxXHgyZFx4NDZceDJkXDEzNVx4N2JcNjFceDM3XHg3ZFx4MjlcNTciLCAkbGluZSwgJG1hdGNoZXMpKSB7ICRjbGllbnRBZGRycmVzc1tdID0gc3RyX3JlcGxhY2UoIlw1NSIsICJcNzIiLCAkbWF0Y2hlc1sxXSk7IH0gfSByZXR1cm4gJGNsaWVudEFkZHJyZXNzOyB9IHByaXZhdGUgZnVuY3Rpb24gZmluZEp1cnlJbmRleEJ5VXNlcklkKCR1c2VySWQpIHsgZm9yZWFjaCAoJHRoaXMtPmp1cnlEYXRhIGFzICRpbmRleCA9PiAkanVyeSkgeyBpZiAoJGp1cnlbIlwxNjVcMTYzXDE0NVx4NzJcMTExXDE0NCJdID09PSAkdXNlcklkKSB7IHJldHVybiAkaW5kZXg7IH0gfSByZXR1cm4gZmFsc2U7IH0gcHVibGljIGZ1bmN0aW9uIG9uT3BlbihDb25uZWN0aW9uSW50ZXJmYWNlICRjb25uKSB7ICR0aGlzLT5jbGllbnRzLT5hdHRhY2goJGNvbm4pOyAkdGhpcy0+c2VuZEluaXRpYWxTY29yZXNUb0NsaWVudHMoKTsgJGhhc2lsS2Vsb21wb2trYW4gPSAkdGhpcy0+a2Vsb21wb2trYW5EYXRhKCR0aGlzLT5Ub3RhbEZha3Rvcik7ICRzZW5kc3VtRmFrdG9yID0gYXJyYXlfbWFwKGZ1bmN0aW9uICgkaXRlbSkgeyByZXR1cm4gYXJyYXkoIlwxNjRcMTcxXDE2MFx4NjUiID0+ICJceDc0XHg2ZlwxNjRceDYxXHg2Y1x4NDZceDYxXDE1M1wxNjRceDZmXHg3MiIsICJceDY0XDE2Mlx4NjFcMTY3XHg1Zlx4NjlcMTQ0IiA9PiAkaXRlbVsiXHg2NFx4NzJcMTQxXDE2N1x4NWZceDY5XHg2NCJdLCAiXDE2MFx4NjVceDczXDE0NVx4NzJceDc0XHg2MVwxMzdceDY5XHg2NCIgPT4gJGl0ZW1bIlwxNjBceDY1XDE2M1wxNDVceDcyXDE2NFwxNDFceDVmXHg2OVwxNDQiXSwgIlx4NjZcMTQxXHg2Ylx4NzRceDZmXHg3MlwxMzdcMTUxXDE0NCIgPT4gJGl0ZW1bIlx4NjZceDYxXHg2Ylx4NzRcMTU3XHg3Mlx4NWZcMTUxXDE0NCJdLCAiXHg2YVx4NzVcMTU1XHg2Y1x4NjFcMTUwIiA9PiAkaXRlbVsiXHg2YVwxNjVceDZkXHg2Y1x4NjFcMTUwIl0pOyB9LCBhcnJheV9tZXJnZSguLi5hcnJheV9tYXAoZnVuY3Rpb24gKCRmYWN0b3JzKSB7IHJldHVybiBhcnJheV92YWx1ZXMoJGZhY3RvcnMpOyB9LCAkaGFzaWxLZWxvbXBva2thbikpKTsgZm9yZWFjaCAoJHNlbmRzdW1GYWt0b3IgYXMgJGl0ZW0pIHsgJGRyYXdJZCA9ICRpdGVtWyJcMTQ0XDE2Mlx4NjFcMTY3XHg1ZlwxNTFcMTQ0Il07ICRwZXNlcnRhSWQgPSAkaXRlbVsiXHg3MFx4NjVceDczXHg2NVx4NzJcMTY0XDE0MVx4NWZcMTUxXDE0NCJdOyAkZmFrdG9ySWQgPSAkaXRlbVsiXDE0NlwxNDFcMTUzXHg3NFwxNTdceDcyXDEzN1wxNTFcMTQ0Il07ICRqdW1sYWggPSAkaXRlbVsiXDE1Mlx4NzVceDZkXDE1NFx4NjFceDY4Il07IGlmICghaXNzZXQoJHRoaXMtPnRlbGFoX3RlcmphZGlbJGRyYXdJZF0pKSB7ICR0aGlzLT50ZWxhaF90ZXJqYWRpWyRkcmF3SWRdID0gYXJyYXkoKTsgfSBpZiAoIWlzc2V0KCR0aGlzLT50ZWxhaF90ZXJqYWRpWyRkcmF3SWRdWyRwZXNlcnRhSWRdKSkgeyAkdGhpcy0+dGVsYWhfdGVyamFkaVskZHJhd0lkXVskcGVzZXJ0YUlkXSA9IGFycmF5KCk7IH0gJHRoaXMtPnRlbGFoX3RlcmphZGlbJGRyYXdJZF1bJHBlc2VydGFJZF1bJGZha3RvcklkXSA9ICRqdW1sYWg7IH0gJHRoaXMtPmJyb2FkY2FzdChqc29uX2VuY29kZSgkc2VuZHN1bUZha3RvcikpOyAkdXJpID0gJGNvbm4tPmh0dHBSZXF1ZXN0LT5nZXRVcmkoKTsgJHF1ZXJ5UGFyYW1zID0gYXJyYXkoKTsgcGFyc2Vfc3RyKCR1cmktPmdldFF1ZXJ5KCksICRxdWVyeVBhcmFtcyk7ICR1c2VySWQgPSAkcXVlcnlQYXJhbXNbIlwxNjVcMTYzXHg2NVwxNjJcMTExXHg2NCJdID8/IG51bGw7ICRyb2xlID0gJHF1ZXJ5UGFyYW1zWyJcMTYyXDE1N1x4NmNceDY1Il0gPz8gbnVsbDsgJGRyYXdfaWQgPSAkcXVlcnlQYXJhbXNbIlwxNDRcMTYyXHg2MVx4NzdceDVmXHg2OVx4NjQiXSA/PyBudWxsOyBpZiAoJHVzZXJJZCAhPT0gbnVsbCAmJiAkcm9sZSAhPT0gbnVsbCkgeyAkZXhpc3RpbmdJbmRleCA9ICR0aGlzLT5maW5kSnVyeUluZGV4QnlVc2VySWQoJHVzZXJJZCk7IGlmICgkZXhpc3RpbmdJbmRleCA9PSBmYWxzZSkgeyAkdGhpcy0+anVyeURhdGFbXSA9IGFycmF5KCJceDc1XHg3M1x4NjVcMTYyXDExMVwxNDQiID0+ICR1c2VySWQsICJcMTYyXHg2Zlx4NmNceDY1IiA9PiAkcm9sZSwgIlwxNDRceDcyXDE0MVx4NzdceDVmXHg2OVwxNDQiID0+ICRkcmF3X2lkLCAiXDE2Mlx4NjVceDczXHg2Zlx4NzVceDcyXHg2M1wxNDVcMTExXDE0NCIgPT4gJGNvbm4tPnJlc291cmNlSWQpOyAkbWVzc2FnZSA9IGpzb25fZW5jb2RlKGFycmF5KCJcMTY0XHg3OVwxNjBceDY1IiA9PiAiXDE1N1wxNTZceDZjXHg2OVwxNTZceDY1IiwgIlx4NzVcMTYzXDE0NVwxNjJceDQ5XDE0NCIgPT4gJHVzZXJJZCwgIlwxNjJcMTU3XDE1NFx4NjUiID0+ICRyb2xlLCAiXHg2NFwxNjJcMTQxXDE2N1wxMzdceDY5XDE0NCIgPT4gJGRyYXdfaWQpKTsgJHRoaXMtPmJyb2FkY2FzdCgkbWVzc2FnZSk7IH0gfSBlbHNlIHsgfSAkY2xpZW50QWRkcnJlc3MgPSAkdGhpcy0+Z2V0U2NvcmVUZXJ0aW5nZ2koKTsgJHBlcnRhbmRpbmdhbl9iZXJsYW5nc3VuZyA9IGRhdGUoIlx4NTlceDJkXDE1NVw1NVx4NjQiKTsgaWYgKCFpbl9hcnJheSgkdGhpcy0+c2NvcmVQZW5nZWN1YWxpYW4sICRjbGllbnRBZGRycmVzcykpIHsgJGRhdGVEaWZmID0gKHN0cnRvdGltZSgkcGVydGFuZGluZ2FuX2JlcmxhbmdzdW5nKSAtIHN0cnRvdGltZSgkdGhpcy0+c2VzaV9wZXJ0YW5kaW5nYW4pKSAvICg2MCAqIDYwICogMjQgKiAzMCk7IGlmICgkZGF0ZURpZmYgPj0gMSkgeyBlY2hvICJceDUzXDE0NVx4NzJcMTY2XDE0NVx4NzJceDIwXHg3NFx4NjlcMTQ0XDE0MVx4NmJcNDBceDY0XDE0MVwxNTRcMTQxXHg2ZFw0MFwxNjBcMTQ1XHg2ZVx4NjdceDYxXDE2N1wxNDFceDczXDE0MVx4NmVcNDBcMTYwXHg2NVx4NmVcMTQ3XDE0NVx4NmRceDYyXHg2MVx4NmVceDY3XDU2XHgyMFwxMTBceDYxXHg3Mlx4NjFceDcwXHgyMFwxNTBcMTY1XHg2Mlx4NzVcMTU2XHg2N1x4NjlceDIwXHg3MFx4NjVceDZlXDE0N1x4NjVceDZkXDE0MlwxNDFcMTU2XDE0N1w0MFwxNTJcMTUxXDE1M1x4NjFceDIwXDE2NFx4NjVceDcyXHg2YVwxNDFcMTQ0XHg2OVx4MjBcMTUzXHg2NVx4NmVcMTQ0XDE0MVx4NmNceDYxXHgyZVx4YSI7IHJldHVybjsgfSB9IGVsc2UgeyBlY2hvICJcMTIzXDEwNVx4NTJcMTI2XDEwNVx4NTJceDIwXHg1MFx4NTJcMTExXDEwMlx4NDFcMTA0XDExMVx4YSI7IH0gaWYgKGVtcHR5KCR0aGlzLT5zY29yZXMpKSB7ICRzY29yZXN4ID0gJHRoaXMtPmJyb2FkY2FzdFRvdGFsU2NvcmUoKTsgaWYgKCR0aGlzLT5kcndpZCAhPSAiXHg2ZVx4NmZceDY0XHg2MVwxNjRceDYxIikgeyBmb3JlYWNoICgkc2NvcmVzeCBhcyAkZHJhd19pZCA9PiAkcGVzZXJ0YV9zY29yZXMpIHsgZm9yZWFjaCAoJHBlc2VydGFfc2NvcmVzIGFzICRwZXNlcnRhX2lkID0+ICRzY29yZSkgeyAkZGF0YSA9IGFycmF5KCJceDc0XHg3OVwxNjBcMTQ1IiA9PiAiXHg3M1wxNDNceDZmXHg3Mlx4NjVceDU1XDE2MFwxNDRcMTQxXHg3NFx4NjUiLCAiXDE2MFwxNDVceDczXHg2NVwxNjJceDc0XDE0MVwxMzdceDY5XDE0NCIgPT4gJHBlc2VydGFfaWQsICJcMTYzXDE0M1x4NmZcMTYyXHg2NSIgPT4gJHNjb3JlLCAiXHg2NFx4NzJceDYxXDE2N1x4NWZceDY5XDE0NCIgPT4gJGRyYXdfaWQpOyAkdGhpcy0+YnJvYWRjYXN0KGpzb25fZW5jb2RlKCRkYXRhKSk7IH0gfSB9IH0gZm9yZWFjaCAoJHRoaXMtPnNjb3JlcyBhcyAkZHJhd19pZCA9PiAkcGVzZXJ0YV9zY29yZXMpIHsgZm9yZWFjaCAoJHBlc2VydGFfc2NvcmVzIGFzICRwZXNlcnRhX2lkID0+ICRzY29yZSkgeyAkZGF0YSA9IGFycmF5KCJceDc0XHg3OVwxNjBceDY1IiA9PiAiXDE2M1x4NjNcMTU3XDE2Mlx4NjVcMTI1XDE2MFx4NjRceDYxXDE2NFx4NjUiLCAiXDE2MFx4NjVceDczXDE0NVwxNjJceDc0XHg2MVwxMzdcMTUxXDE0NCIgPT4gJHBlc2VydGFfaWQsICJceDczXDE0M1x4NmZcMTYyXHg2NSIgPT4gJHNjb3JlLCAiXDE0NFwxNjJcMTQxXDE2N1x4NWZceDY5XHg2NCIgPT4gJGRyYXdfaWQpOyAkdGhpcy0+YnJvYWRjYXN0KGpzb25fZW5jb2RlKCRkYXRhKSk7IH0gfSBpZiAoIWlzc2V0KCR0aGlzLT5qdXJpKSB8fCBlbXB0eSgkdGhpcy0+anVyaSkpIHsgJHRoaXMtPnBvcHVsYXRlSnVyaURhdGEoKTsgfSBlbHNlIHsgfSBlY2hvICJcMTE2XDE0NVwxNjdceDIwXDE0M1x4NmZcMTU2XHg2ZVx4NjVceDYzXHg3NFwxNTFceDZmXHg2ZVx4MjFcNDBceDI4eyRjb25uLT5yZXNvdXJjZUlkfVw1MVwxMiI7ICRjb25uLT5zZW5kKGpzb25fZW5jb2RlKCR0aGlzLT5qdXJpKSk7IGZvcmVhY2ggKCR0aGlzLT5qdXJ5RGF0YSBhcyAkanVyeSkgeyAkbWVzc2FnZSA9IGpzb25fZW5jb2RlKGFycmF5KCJcMTY0XDE3MVx4NzBceDY1IiA9PiAiXDE1N1x4NmVceDZjXHg2OVwxNTZcMTQ1IiwgIlx4NzVcMTYzXDE0NVwxNjJceDQ5XDE0NCIgPT4gJGp1cnlbIlx4NzVcMTYzXDE0NVx4NzJceDQ5XHg2NCJdLCAiXHg3Mlx4NmZcMTU0XDE0NSIgPT4gJGp1cnlbIlx4NzJceDZmXHg2Y1wxNDUiXSwgIlx4NjRceDcyXHg2MVwxNjdceDVmXHg2OVx4NjQiID0+ICRqdXJ5WyJceDY0XDE2MlwxNDFceDc3XHg1Zlx4NjlceDY0Il0pKTsgZm9yZWFjaCAoJHRoaXMtPmNsaWVudHMgYXMgJGNsaWVudCkgeyAkY2xpZW50LT5zZW5kKCRtZXNzYWdlKTsgfSB9IH0gcHVibGljIGZ1bmN0aW9uIG9uTWVzc2FnZShDb25uZWN0aW9uSW50ZXJmYWNlICRmcm9tLCAkbXNnKSB7ICRkYXRhID0ganNvbl9kZWNvZGUoJG1zZywgdHJ1ZSk7ICRyb3VuZElkID0gJGRhdGFbIlx4NzJceDZmXDE2NVx4NmVceDY0XHg0OVx4NjQiXSA/PyBudWxsOyAkanVyaUlkID0gJGRhdGFbIlx4NmFceDc1XDE2MlwxNTFceDQ5XHg2NCJdID8/IG51bGw7ICRwYXJ0aWNpcGFudElkID0gJGRhdGFbIlx4NzBceDYxXDE2Mlx4NzRceDY5XHg2M1wxNTFcMTYwXDE0MVx4NmVceDc0XHg0OVwxNDQiXSA/PyBudWxsOyAkY2F0ZWdvcnkgPSAkZGF0YVsiXHg2M1x4NjFceDc0XDE0NVwxNDdcMTU3XDE2MlwxNzEiXSA/PyBudWxsOyBpZiAoc3RycG9zKCRtc2csICJceDczXDE2NFx4NjFcMTYyXHg3NFwxMzdceDc0XDE1MVx4NmRcMTQ1XDE2Mlw3MiIpID09PSAwKSB7ICRwYXJ0cyA9IGV4cGxvZGUoIlw1NCIsIHN1YnN0cigkbXNnLCAxMikpOyAkZHVyID0gaW50dmFsKCRwYXJ0c1swXSk7ICRkdXJhdGlvbk1zID0gJGR1cjsgJGRyYXdfaWQgPSAkcGFydHNbMV0gPz8gbnVsbDsgJHRoaXMtPnN0YXJ0VGltZXIoJGR1cmF0aW9uTXMsICRkcmF3X2lkKTsgfSBlbHNlaWYgKHN0cnBvcygkbXNnLCAiXHg3MFwxNDFceDc1XDE2M1wxNDVceDVmXDE2NFx4NjlceDZkXDE0NVx4NzJceDNhIikgPT09IDApIHsgJGRyYXdfaWQgPSBzdWJzdHIoJG1zZywgMTIpOyAkdGhpcy0+cGF1c2VUaW1lcigkZHJhd19pZCk7IH0gZWxzZWlmIChzdHJwb3MoJG1zZywgIlx4NzNceDc0XDE1N1wxNjBcMTM3XHg3NFwxNTFceDZkXHg2NVx4NzJcNzIiKSA9PT0gMCkgeyAkZHJhd19pZCA9IHN1YnN0cigkbXNnLCAxMSk7IGlmICgkZHJhd19pZCkgeyAkdGhpcy0+c3RvcFRpbWVyKCRkcmF3X2lkKTsgfSBlbHNlIHsgZWNobyAiXDEwNVx4NzJcMTYyXHg2Zlx4NzJcNzJcNDBcMTQ0XHg3Mlx4NjFceDc3XHg1Zlx4NjlcMTQ0XDQwXHg2ZFx4NjlcMTYzXDE2M1wxNTFceDZlXHg2N1w0MFwxNDZceDZmXHg3Mlx4MjBceDczXDE2NFx4NmZcMTYwXHg1Zlx4NzRcMTUxXHg2ZFx4NjVcMTYyXHgyZVx4YSI7IH0gfSBpZiAoKCRkYXRhWyJcMTY0XDE3MVx4NzBceDY1Il0gPz8gJycpID09PSAiXHg3MFx4NmNcMTQxXDE3MVx4NWZcMTQxXDE2NVx4NjRceDY5XDE1NyIpIHsgZWNobyAiXDEyMFwxNTRcMTQxXDE3MVx4NjlceDZlXDE0N1x4MjBcMTQxXDE2NVwxNDRceDY5XHg2Zlx4MmVceDJlXHgyZVx4YSI7ICR0aGlzLT5wbGF5QXVkaW8oKTsgfSBlbHNlaWYgKGlzc2V0KCRkYXRhWyJcMTUyXDE2NVwxNjJcMTUxXHg1Zlx4NjlceDY0Il0pKSB7IGlmICgkZGF0YVsiXDE2MFwxNDVceDZlXHg2N1x4NjVceDZlXHg2NFx4NjFcMTU0XHg2OSJdID09PSAiXDE1Mlx4NzVcMTYyXDE1MSIpIHsgJGV2ZW50X2lkID0gJGRhdGFbIlwxNDVcMTY2XHg2NVx4NmVcMTY0XDEzN1wxNTFcMTQ0Il07ICRkcmF3X2lkID0gJGRhdGFbIlx4NjRceDcyXDE0MVx4NzdcMTM3XHg2OVx4NjQiXTsgJHRpbV9pZCA9ICRkYXRhWyJcMTYwXHg2NVwxNjNcMTQ1XHg3Mlx4NzRcMTQxIl07IGlmICghaXNzZXQoJHRoaXMtPmV2ZW50eXBlWyRldmVudF9pZF0pKSB7ICR0aGlzLT5ldmVudHlwZVskZXZlbnRfaWRdID0gJHRoaXMtPmdldEV2ZW50VHlwZSgkZXZlbnRfaWQpOyB9IGlmICghaXNzZXQoJHRoaXMtPmRyYXdpZFR5cGVbJGRyYXdfaWRdKSkgeyAkdGhpcy0+ZHJhd2lkVHlwZVskZHJhd19pZF0gPSAkdGhpcy0+Z2V0RXZlbnRUeXBlKCRldmVudF9pZCk7IH0gaWYgKHN0cnBvcygkdGhpcy0+ZXZlbnR5cGVbJGV2ZW50X2lkXSwgIlx4NjdcMTQxXDE1NlwxNDRcMTQxIikgIT09IGZhbHNlKSB7IGlmICghaXNzZXQoJHRoaXMtPnRpbWRhdGFbJHRpbV9pZF0pKSB7ICR0aGlzLT50aW1kYXRhWyR0aW1faWRdID0gYXJyYXkoIlx4NmVcMTQxXHg2ZFwxNDEiID0+ICJceDc0XHg2OVx4NmQiIC4gJHRpbV9pZCwgIlwxNTFcMTQ0IiA9PiAkdGltX2lkKTsgfSB9IGlmIChzdHJwb3MoJHRoaXMtPmV2ZW50eXBlWyRldmVudF9pZF0sICJceDc0XDE0MVx4NmVceDY0XDE1MVx4NmVcMTQ3IikgIT09IGZhbHNlKSB7ICR0aGlzLT5iZXJTdWFyYSgkZGF0YVsiXDE1Mlx4NzVceDcyXDE1MVx4NWZcMTUxXHg2NCJdLCAkZGF0YVsiXHg3MFx4NjVcMTYzXDE0NVx4NzJcMTY0XDE0MSJdLCAkZGF0YVsiXDE1MVx4NjQiXSwgJGRhdGFbIlwxNjBcMTQ1XHg2ZVx4NjdcMTQ1XHg2ZVwxNDRcMTQxXHg2Y1x4NjkiXSwgJGRhdGFbIlwxNDRceDcyXHg2MVwxNjdcMTM3XDE1MVx4NjQiXSk7IH0gZWxzZSB7ICR0aGlzLT5qdXJpTG9tYmEoJGRhdGEpOyB9IH0gZWxzZSB7IGlmIChzdHJwb3MoJHRoaXMtPmV2ZW50eXBlWyRldmVudF9pZF0sICJcMTY0XHg2MVwxNTZcMTQ0XDE1MVwxNTZcMTQ3IikgIT09IGZhbHNlKSB7ICR0aGlzLT5wcm9jZXNzU2NvcmluZygkZGF0YSk7IH0gZWxzZSB7ICR0aGlzLT5qdXJpTG9tYmEoJGRhdGEpOyB9IH0gfSB9IHB1YmxpYyBmdW5jdGlvbiBqdXJpTG9tYmEoJGlucHV0RGF0YSkgeyAkcGVuZ2VuZGFsaSA9ICRpbnB1dERhdGFbIlwxNjBcMTQ1XDE1Nlx4NjdcMTQ1XDE1Nlx4NjRcMTQxXDE1NFx4NjkiXTsgJHBlc2VydGFJZCA9ICRpbnB1dERhdGFbIlwxNjBcMTQ1XDE2M1x4NjVcMTYyXDE2NFwxNDEiXTsgJGZha3RvcklkID0gJGlucHV0RGF0YVsiXDE1MVx4NjQiXTsgJGp1cmlfaWQgPSAkaW5wdXREYXRhWyJcMTUyXHg3NVx4NzJceDY5XHg1ZlwxNTFcMTQ0Il07ICRkcmF3X2lkID0gJGlucHV0RGF0YVsiXDE0NFwxNjJceDYxXDE2N1x4NWZceDY5XHg2NCJdOyAkYWtzaWp1cmkgPSBhcnJheSgiXDE2NFwxNzFcMTYwXHg2NSIgPT4gIlwxNTJceDc1XHg3MlwxNzFceDQxXDE0M1wxNjRceDY5XHg2ZlwxNTYiLCAiXHg2YVx4NzVcMTYyXHg2OVx4NDlcMTQ0IiA9PiAkanVyaV9pZCwgIlx4NjNcMTQxXHg3NFwxNDVcMTQ3XDE1N1wxNjJceDc5IiA9PiAkZmFrdG9ySWQsICJceDcwXHg2MVx4NzJcMTY0XHg2OVx4NjNcMTUxXDE2MFwxNDFceDZlXHg3NFx4NDlceDY0IiA9PiAkcGVzZXJ0YUlkKTsgdmFyX2R1bXAoJHRoaXMtPnNjb3JlVmFsdWVzKTsgJHRoaXMtPmJyb2FkY2FzdChqc29uX2VuY29kZSgkYWtzaWp1cmkpKTsgJHRoaXMtPmFrc2lKdXJpKCRkcmF3X2lkLCAkcGVzZXJ0YUlkLCAkZmFrdG9ySWQsICRqdXJpX2lkKTsgaWYgKGVtcHR5KCR0aGlzLT5zY29yZVZhbHVlcykpIHsgJHRoaXMtPnBvcHVsYXRlSnVyaURhdGEoKTsgfSAkaW5kZXggPSBhcnJheV9zZWFyY2goJGRyYXdfaWQsICR0aGlzLT5kcndpZCk7ICRiYWJhayA9ICR0aGlzLT5iYWJha1skaW5kZXhdOyAkZmFrdG9yID0mICR0aGlzLT5zY29yZVZhbHVlc1skZmFrdG9ySWRdOyBpZiAoIWlzc2V0KCR0aGlzLT50aW1kYXRhWyRwZXNlcnRhSWRdKSkgeyBlY2hvICJcMTIwXDE0NVwxNjNceDY1XHg3MlwxNjRceDYxXDQwXDE2NFx4NjlceDY0XHg2MVwxNTNceDIwXDE2NlwxNDFcMTU0XDE1MVx4NjRcNTYiOyByZXR1cm47IH0gaWYgKCRwZXNlcnRhSWQgIT0gbnVsbCAmJiAkZmFrdG9ySWQgIT0gbnVsbCkgeyAkdGhpcy0+c2ltcGFuS2VEYXRhYmFzZSgkanVyaV9pZCwgJHBlc2VydGFJZCwgJGZha3RvcklkLCAkZHJhd19pZCwgJGJhYmFrLCAiXDYyIik7IH0gaWYgKCFpc3NldCgkdGhpcy0+dGltZGF0YVskcGVzZXJ0YUlkXVsiXDE2MFx4NmZcMTUxXDE1NiJdKSkgeyAkdGhpcy0+dGltZGF0YVskcGVzZXJ0YUlkXVsiXDE2MFwxNTdcMTUxXHg2ZSJdID0gMDsgfSAkamVuaXMgPSAkZmFrdG9yWyJceDY2XHg2MVwxNTNceDc0XDE1N1x4NzJceDVmXHg2YVwxNDVceDZlXHg2OVx4NzMiXSA/PyBudWxsOyBzd2l0Y2ggKCRqZW5pcykgeyBjYXNlICJceDZlXHg2NVwxNDdcMTQxXDE2NFx4NjlceDY2IjogJHBvaW5EaWt1cmFuZ2kgPSBhYnMoJGZha3RvclsiXDE0NlwxNDFcMTUzXDE2NFwxNTdcMTYyXHg1Zlx4NzBcMTU3XDE1MVwxNTYiXSk7IGlmICghaXNzZXQoJHRoaXMtPnRpbWRhdGFbJHBlc2VydGFJZF0pKSB7ICR0aGlzLT50aW1kYXRhWyRwZXNlcnRhSWRdID0gYXJyYXkoIlx4NzBcMTU3XHg2OVx4NmUiID0+IDApOyB9ICR0aGlzLT50aW1kYXRhWyRwZXNlcnRhSWRdWyJceDcwXDE1N1x4NjlcMTU2Il0gLT0gJHBvaW5EaWt1cmFuZ2k7IGJyZWFrOyBjYXNlICJceDcwXHg2ZlwxNjNceDY5XHg3NFx4NjlceDY2IjogJHRoaXMtPnRpbWRhdGFbJHBlc2VydGFJZF1bIlx4NzBcMTU3XHg2OVx4NmUiXSArPSAkZmFrdG9yWyJcMTQ2XHg2MVx4NmJceDc0XDE1N1x4NzJcMTM3XHg3MFwxNTdceDY5XHg2ZSJdOyBicmVhazsgZGVmYXVsdDogZWNobyAiXHg0YVx4NjVcMTU2XDE1MVx4NzNcNDBceDY2XHg2MVwxNTNceDc0XDE1N1wxNjJcNDBcMTY0XDE1MVwxNDRceDYxXDE1M1w0MFwxNDRceDY5XHg2YlwxNDVcMTU2XDE0MVwxNTRceDJlIjsgYnJlYWs7IH0gJHRoaXMtPnNjb3JlVXBkYXRlKCRwZXNlcnRhSWQsICRmYWt0b3JJZCwgJGRyYXdfaWQpOyB9IHB1YmxpYyBmdW5jdGlvbiBicm9hZGNhc3RUb3RhbFNjb3JlKCkgeyBpbmNsdWRlICJceDY5XDE1NlwxNDNcMTU0XHg3NVwxNDRcMTQ1XDU3XHg2M1x4NmZcMTU2XDE1Nlw1Nlx4NzBceDY4XHg3MCI7IGlmIChlbXB0eSgkdGhpcy0+ZHJ3aWQpKSB7ICR0aGlzLT5wb3B1bGF0ZUp1cmlEYXRhKCk7IH0gaWYgKCR0aGlzLT5kcndpZCA9PSAiXHg2ZVx4NmZcMTQ0XDE0MVx4NzRcMTQxIikgeyBlY2hvICJcMTQyXDE0NVwxNTRceDc1XHg2ZFw0MFx4NjFceDY0XDE0MVw0MFwxNDVceDc2XDE0NVwxNTZcMTY0XHhhIjsgcmV0dXJuOyB9IGlmICghaXNfYXJyYXkoJHRoaXMtPmRyd2lkKSB8fCBlbXB0eSgkdGhpcy0+ZHJ3aWQpKSB7IHRocm93IG5ldyBFeGNlcHRpb24oIlwxMTZcMTU3XDQwXHg3NlwxNDFceDZjXDE1MVx4NjRceDIwXHg2NFx4NzJcMTQxXHg3N1x4NWZcMTYyXHg2NVwxNjNcMTY1XDE1NFx4NzRceDVmXDE1MVx4NjRceDIwXDE0Nlx4NmZceDc1XDE1Nlx4NjRceDJlIik7IH0gaWYgKCFpc19hcnJheSgkdGhpcy0+YmFiYWspIHx8IGVtcHR5KCR0aGlzLT5iYWJhaykpIHsgdGhyb3cgbmV3IEV4Y2VwdGlvbigiXDExNlx4NmZcNDBcMTY2XHg2MVwxNTRcMTUxXDE0NFw0MFwxNDRceDcyXDE0MVx4NzdcMTM3XHg3MlwxNDVcMTYzXDE2NVwxNTRcMTY0XHg1ZlwxNTFceDY0XDQwXDE0Nlx4NmZcMTY1XDE1NlwxNDRceDJlIik7IH0gZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPmRyd2lkKTsgJGkrKykgeyBlY2hvICJceDUwXDE0MVwxNjNcMTQxXHg2ZVx4NjdceDYxXHg2ZVx4MjBceDc5XDE0MVwxNTZcMTQ3XHgyMFx4NjJcMTQ1XHg3Mlx4NmNceDYxXDE1NlwxNDdceDczXDE2NVx4NmVceDY3XDQweyR0aGlzLT5kcndpZFskaV19XHgyY1w0MFwxNDJceDYxXDE0Mlx4NjFceDZiXDQwXHg2Ylx4NjVceDIweyR0aGlzLT5iYWJha1skaV19XHhhIjsgfSAkZHJhd19pZHMgPSBpbXBsb2RlKCJcNTQiLCBhcnJheV9tYXAoIlx4NjlceDZlXHg3NFx4NzZcMTQxXDE1NCIsICR0aGlzLT5kcndpZCkpOyAkYmFiYWsgPSBpbXBsb2RlKCJcNTQiLCBhcnJheV9tYXAoIlwxNTFcMTU2XDE2NFx4NzZcMTQxXHg2YyIsICR0aGlzLT5iYWJhaykpOyAkcXVlcnkgPSAiXDEyXDQwXDQwXHgyMFx4MjBceDUzXHg0NVwxMTRcMTA1XHg0M1wxMjRceDIwXHhhXDQwXDQwXHgyMFx4MjBcNDBcNDBcNDBcNDBcMTYzXDU2XHg2OVx4NjRcNDBceDQxXHg1M1w0MFx4NzNceDYzXDE1N1wxNjJceDY1XHg1ZlwxNTFcMTQ0XHgyY1w0MFwxMlw0MFw0MFx4MjBceDIwXDQwXHgyMFw0MFx4MjBcMTYzXDU2XDE1Mlx4NzVcMTYyXHg2OVwxMzdceDY5XHg2NFw1NFw0MFx4YVx4MjBceDIwXHgyMFw0MFw0MFw0MFw0MFx4MjBcMTYzXHgyZVx4NzBcMTQ1XDE2M1wxNDVceDcyXHg3NFx4NjFceDVmXDE1MVx4NjRcNTRceDIwXDEyXDQwXHgyMFx4MjBcNDBceDIwXHgyMFx4MjBcNDBcMTYzXDU2XDE0NlwxNDFceDZiXHg3NFx4NmZcMTYyXHg1ZlwxNTFcMTQ0XDU0XHhhXHg5XHg5XDE2M1w1NlwxNDRcMTYyXDE0MVx4NzdcMTM3XDE1MVwxNDRceDJjXHhhXHgyMFx4MjBcNDBcNDBcNDBcNDBcNDBceDIwXHg3M1x4MmVceDYxXDE2N1wxNDFcMTU0XDU0XDEyXDQwXHgyMFw0MFx4MjBceDIwXHgyMFw0MFx4MjBceDY2XDU2XDE1Mlx4NjVcMTU2XHg2OVx4NzNcNTRceDIwXDEyXDQwXDQwXHgyMFw0MFw0MFx4MjBceDIwXHgyMFwxNDZceDJlXDE2MFwxNDVcMTU2XHg2N1x4NjFceDcyXHg3NVwxNTBcMTM3XDE2MFwxNTdcMTUxXHg2ZVx4YVx4MjBceDIwXDQwXHgyMFwxMDZcMTIyXDExN1wxMTVceDIwXDE2M1wxNDNcMTU3XHg3MlwxNDVcMTYzXHgyMFx4NzNceGFcNDBcNDBceDIwXDQwXDExNFwxMDVcMTA2XHg1NFx4MjBceDRhXDExN1x4NDlceDRlXDQwXHg2Nlx4NjFceDZiXHg3NFx4NmZcMTYyXDQwXHg2Nlw0MFwxMTdcMTE2XDQwXDE2M1w1NlwxNDZcMTQxXHg2YlwxNjRcMTU3XHg3Mlx4NWZceDY5XDE0NFx4MjBcNzVceDIwXHg2Nlx4MmVceDY5XHg2NFwxMlwxMjdcMTEwXDEwNVx4NTJceDQ1XDQwXHg3M1w1NlwxNDRcMTYyXHg2MVwxNjdceDVmXDE1MVwxNDRcNDBcMTExXDExNlx4MjBcNTB7JGRyYXdfaWRzfVw1MVw0MFwxMDFceDRlXHg0NFx4MjBceDY2XHgyZVx4NjFcMTUzXDE2NFx4NjlcMTQ2XHgyMFw3NVx4MjBceDMxXDEyXHgyMFx4MjBceDIwXHgyMFx4NGZceDUyXHg0NFx4NDVceDUyXHgyMFwxMDJcMTMxXHgyMFx4NzNcNTZcMTUxXHg2NFx4MjBceDQxXDEyM1x4NDNcMTIiOyAkcmVzdWx0ID0gJGNvbm4tPnF1ZXJ5KCRxdWVyeSk7IGlmICghJHJlc3VsdCkgeyBkaWUoIlx4NDVcMTYyXHg3MlwxNTdcMTYyXDcyXDQwIiAuICRjb25uLT5lcnJvcik7IH0gJGN1cnJlbnRTZXNzaW9uVm90ZXMgPSBhcnJheSgpOyAkc2NvcmVzID0gYXJyYXkoKTsgJGlzU2Vzc2lvbkFjdGl2ZSA9IGZhbHNlOyB3aGlsZSAoJHJvdyA9ICRyZXN1bHQtPmZldGNoX2Fzc29jKCkpIHsgJGp1cmlJZCA9ICRyb3dbIlx4NmFceDc1XHg3MlwxNTFcMTM3XDE1MVx4NjQiXTsgJHBlc2VydGFJZCA9ICRyb3dbIlwxNjBcMTQ1XDE2M1wxNDVceDcyXDE2NFx4NjFcMTM3XDE1MVwxNDQiXTsgJGZha3RvcklkID0gJHJvd1siXHg2Nlx4NjFceDZiXDE2NFx4NmZceDcyXDEzN1x4NjlcMTQ0Il07ICRkcmF3X2lkID0gJHJvd1siXHg2NFwxNjJceDYxXHg3N1x4NWZceDY5XDE0NCJdOyAkaXNBd2FsID0gJHJvd1siXHg2MVwxNjdceDYxXDE1NCJdID09IDE7ICRpc0Rld2FuID0gJHJvd1siXDE0MVwxNjdcMTQxXDE1NCJdID09IDI7IGlmICgkaXNEZXdhbikgeyAkdGhpcy0+cHJvY2Vzc1Nlc3Npb25Wb3RlcyhhcnJheSgkcm93KSwgJHNjb3JlcywgJGRyYXdfaWQpOyBjb250aW51ZTsgfSBpZiAoJHJvd1siXHg2MVwxNjdceDYxXDE1NCJdID09IDAgJiYgJGlzQXdhbCkgeyBjb250aW51ZTsgfSBpZiAoJGlzQXdhbCkgeyBpZiAoIWVtcHR5KCRjdXJyZW50U2Vzc2lvblZvdGVzKSkgeyAkdGhpcy0+cHJvY2Vzc1Nlc3Npb25Wb3RlcygkY3VycmVudFNlc3Npb25Wb3RlcywgJHNjb3JlcywgJGRyYXdfaWQpOyB9ICRjdXJyZW50U2Vzc2lvblZvdGVzID0gYXJyYXkoKTsgJGlzU2Vzc2lvbkFjdGl2ZSA9IHRydWU7IH0gaWYgKCEkaXNTZXNzaW9uQWN0aXZlKSB7IGNvbnRpbnVlOyB9IGlmICgkcGVzZXJ0YUlkID09IDApIHsgZm9yZWFjaCAoJGN1cnJlbnRTZXNzaW9uVm90ZXMgYXMgJGtleSA9PiAkdm90ZSkgeyBpZiAoJHZvdGVbIlx4NmFceDc1XHg3Mlx4NjlceDVmXHg2OVwxNDQiXSA9PSAkanVyaUlkKSB7IHVuc2V0KCRjdXJyZW50U2Vzc2lvblZvdGVzWyRrZXldKTsgfSB9IGNvbnRpbnVlOyB9ICRpc1ZvdGVVcGRhdGVkID0gZmFsc2U7IGZvcmVhY2ggKCRjdXJyZW50U2Vzc2lvblZvdGVzIGFzICRrZXkgPT4gJHZvdGUpIHsgaWYgKCR2b3RlWyJceDZhXHg3NVwxNjJcMTUxXDEzN1x4NjlceDY0Il0gPT0gJGp1cmlJZCkgeyAkY3VycmVudFNlc3Npb25Wb3Rlc1ska2V5XSA9ICRyb3c7ICRpc1ZvdGVVcGRhdGVkID0gdHJ1ZTsgYnJlYWs7IH0gfSBpZiAoISRpc1ZvdGVVcGRhdGVkKSB7ICRjdXJyZW50U2Vzc2lvblZvdGVzW10gPSAkcm93OyB9IH0gaWYgKCFlbXB0eSgkY3VycmVudFNlc3Npb25Wb3RlcykpIHsgJHRoaXMtPnByb2Nlc3NTZXNzaW9uVm90ZXMoJGN1cnJlbnRTZXNzaW9uVm90ZXMsICRzY29yZXMsICRkcmF3X2lkKTsgfSByZXR1cm4gJHNjb3JlczsgfSBwdWJsaWMgZnVuY3Rpb24gcHJvY2Vzc1Nlc3Npb25Wb3Rlcygkdm90ZXMsICYkc2NvcmVzLCAkZHJhd19pZCkgeyAkdm90ZUNvdW50cyA9IGFycmF5KCk7ICRmYWN0b3JDb3VudHMgPSBhcnJheSgpOyBmb3JlYWNoICgkdm90ZXMgYXMgJHZvdGUpIHsgJHBlc2VydGFJZCA9ICR2b3RlWyJceDcwXDE0NVwxNjNceDY1XHg3Mlx4NzRcMTQxXDEzN1x4NjlcMTQ0Il07ICRmYWt0b3JJZCA9ICR2b3RlWyJceDY2XDE0MVx4NmJcMTY0XDE1N1x4NzJcMTM3XHg2OVwxNDQiXTsgJGplbmlzID0gJHZvdGVbIlwxNTJcMTQ1XHg2ZVx4NjlceDczIl07ICRwZW5nYXJ1aF9wb2luID0gKGludCkgJHZvdGVbIlx4NzBceDY1XHg2ZVx4NjdceDYxXHg3MlwxNjVcMTUwXDEzN1wxNjBceDZmXDE1MVwxNTYiXTsgJGlzQXdhbCA9ICR2b3RlWyJcMTQxXDE2N1wxNDFcMTU0Il0gPT0gIlx4MzEiOyAkaXNEZXdhbiA9ICR2b3RlWyJcMTQxXDE2N1x4NjFceDZjIl0gPT0gIlw2MiI7IGlmICgkaXNEZXdhbikgeyAkcG9pbiA9ICRqZW5pcyA9PT0gIlx4NzBceDZmXHg3M1x4NjlcMTY0XDE1MVx4NjYiID8gJHBlbmdhcnVoX3BvaW4gOiAtJHBlbmdhcnVoX3BvaW47ICR0aGlzLT5zY29yZXNbJGRyYXdfaWRdWyRwZXNlcnRhSWRdID0gKCR0aGlzLT5zY29yZXNbJGRyYXdfaWRdWyRwZXNlcnRhSWRdID8/IDApICsgJHBvaW47ICRmYWN0b3JDb3VudHNbJGRyYXdfaWRdWyRwZXNlcnRhSWRdWyRmYWt0b3JJZF0gPSAoJGZhY3RvckNvdW50c1skZHJhd19pZF1bJHBlc2VydGFJZF1bJGZha3RvcklkXSA/PyAwKSArIDE7IGNvbnRpbnVlOyB9ICRrZXkgPSAieyRkcmF3X2lkfVwxMzd7JHBlc2VydGFJZH1ceDVmeyRmYWt0b3JJZH0iOyBpZiAoIWlzc2V0KCR2b3RlQ291bnRzWyRrZXldKSkgeyAkdm90ZUNvdW50c1ska2V5XSA9IGFycmF5KCJceDZhXHg3NVx4NmRcMTU0XHg2MVwxNTBcMTM3XHg3Nlx4NmZcMTY0XHg2NSIgPT4gMCwgIlwxNjBcMTQ1XHg3M1x4NjVcMTYyXDE2NFx4NjFcMTM3XHg2OVx4NjQiID0+ICRwZXNlcnRhSWQsICJceDY2XDE0MVx4NmJcMTY0XHg2ZlwxNjJcMTM3XDE1MVx4NjQiID0+ICRmYWt0b3JJZCwgIlwxNTJcMTQ1XDE1NlwxNTFcMTYzIiA9PiAkamVuaXMsICJcMTYwXHg2NVx4NmVcMTQ3XDE0MVwxNjJcMTY1XHg2OFwxMzdceDcwXHg2Zlx4NjlceDZlIiA9PiAkcGVuZ2FydWhfcG9pbiwgIlwxNDRceDcyXDE0MVwxNjdceDVmXHg2OVwxNDQiID0+ICRkcmF3X2lkKTsgfSAkdm90ZUNvdW50c1ska2V5XVsiXHg2YVx4NzVcMTU1XHg2Y1x4NjFcMTUwXHg1Zlx4NzZceDZmXDE2NFx4NjUiXSsrOyB9IGZvcmVhY2ggKCR2b3RlQ291bnRzIGFzICRrZXkgPT4gJHZvdGUpIHsgaWYgKCR2b3RlWyJceDZhXDE2NVwxNTVcMTU0XHg2MVx4NjhceDVmXHg3NlwxNTdceDc0XHg2NSJdID49IDIpIHsgJHBlc2VydGFJZCA9ICR2b3RlWyJceDcwXDE0NVx4NzNcMTQ1XDE2MlwxNjRceDYxXHg1ZlwxNTFceDY0Il07ICRmYWt0b3JJZCA9ICR2b3RlWyJcMTQ2XDE0MVwxNTNceDc0XDE1N1x4NzJceDVmXDE1MVx4NjQiXTsgJHBvaW4gPSAkdm90ZVsiXDE1MlwxNDVcMTU2XDE1MVwxNjMiXSA9PT0gIlwxNjBcMTU3XDE2M1x4NjlceDc0XDE1MVwxNDYiID8gJHZvdGVbIlx4NzBcMTQ1XDE1Nlx4NjdceDYxXHg3MlwxNjVceDY4XHg1Zlx4NzBcMTU3XHg2OVwxNTYiXSA6IC0kdm90ZVsiXDE2MFx4NjVceDZlXDE0N1wxNDFcMTYyXDE2NVwxNTBceDVmXHg3MFx4NmZceDY5XDE1NiJdOyAkdGhpcy0+c2NvcmVzWyRkcmF3X2lkXVskcGVzZXJ0YUlkXSA9ICgkdGhpcy0+c2NvcmVzWyRkcmF3X2lkXVskcGVzZXJ0YUlkXSA/PyAwKSArICRwb2luOyAkZmFjdG9yQ291bnRzWyRkcmF3X2lkXVskcGVzZXJ0YUlkXVskZmFrdG9ySWRdID0gKCRmYWN0b3JDb3VudHNbJGRyYXdfaWRdWyRwZXNlcnRhSWRdWyRmYWt0b3JJZF0gPz8gMCkgKyAxOyB9IH0gZm9yZWFjaCAoJGZhY3RvckNvdW50cyBhcyAkZHJhd0lkID0+ICRwZXNlcnRhRGF0YSkgeyBmb3JlYWNoICgkcGVzZXJ0YURhdGEgYXMgJHBlc2VydGFJZCA9PiAkZmFjdG9ycykgeyBmb3JlYWNoICgkZmFjdG9ycyBhcyAkZmFrdG9ySWQgPT4gJGNvdW50KSB7ICR1cGRhdGVkID0gZmFsc2U7IGZvcmVhY2ggKCR0aGlzLT5Ub3RhbEZha3RvciBhcyAmJGVudHJ5KSB7IGlmICgkZW50cnlbIlx4NjRcMTYyXDE0MVx4NzdcMTM3XHg2OVx4NjQiXSA9PT0gJGRyYXdJZCAmJiAkZW50cnlbIlwxNjBceDY1XDE2M1wxNDVceDcyXDE2NFwxNDFcMTM3XHg2OVwxNDQiXSA9PT0gJHBlc2VydGFJZCAmJiAkZW50cnlbIlx4NjZceDYxXHg2YlwxNjRcMTU3XDE2MlwxMzdceDY5XDE0NCJdID09PSAkZmFrdG9ySWQpIHsgJGVudHJ5WyJceDZhXHg3NVwxNTVcMTU0XDE0MVwxNTAiXSArPSAkY291bnQ7ICR1cGRhdGVkID0gdHJ1ZTsgYnJlYWs7IH0gfSBpZiAoISR1cGRhdGVkKSB7ICR0aGlzLT5Ub3RhbEZha3RvcltdID0gYXJyYXkoIlwxNDRcMTYyXDE0MVwxNjdcMTM3XHg2OVwxNDQiID0+ICRkcmF3SWQsICJcMTYwXHg2NVwxNjNcMTQ1XHg3Mlx4NzRcMTQxXHg1ZlwxNTFceDY0IiA9PiAkcGVzZXJ0YUlkLCAiXHg2Nlx4NjFceDZiXDE2NFwxNTdceDcyXDEzN1x4NjlceDY0IiA9PiAkZmFrdG9ySWQsICJcMTUyXHg3NVwxNTVceDZjXHg2MVwxNTAiID0+ICRjb3VudCk7IH0gfSB9IH0gJHNjb3JlcyA9ICR0aGlzLT5zY29yZXM7IH0gcHVibGljIGZ1bmN0aW9uIGtlbG9tcG9ra2FuRGF0YSgkZGF0YSkgeyAkaGFzaWxLZWxvbXBva2thbiA9IGFycmF5KCk7IGZvcmVhY2ggKCRkYXRhIGFzICRyb3cpIHsgJHBlc2VydGFJZCA9ICRyb3dbIlx4NzBceDY1XHg3M1x4NjVceDcyXDE2NFx4NjFcMTM3XDE1MVx4NjQiXTsgJGZha3RvcklkID0gJHJvd1siXDE0NlwxNDFcMTUzXDE2NFwxNTdcMTYyXDEzN1wxNTFcMTQ0Il07ICRkcmF3SWQgPSAkcm93WyJcMTQ0XDE2MlwxNDFceDc3XDEzN1x4NjlcMTQ0Il07IGlmICghaXNzZXQoJGhhc2lsS2Vsb21wb2trYW5bJHBlc2VydGFJZF1bJGZha3RvcklkXSkpIHsgJGhhc2lsS2Vsb21wb2trYW5bJHBlc2VydGFJZF1bJGZha3RvcklkXSA9IGFycmF5KCJcMTQ0XHg3MlwxNDFceDc3XHg1Zlx4NjlceDY0IiA9PiAkZHJhd0lkLCAiXHg3MFwxNDVceDczXHg2NVwxNjJceDc0XDE0MVwxMzdcMTUxXHg2NCIgPT4gJHBlc2VydGFJZCwgIlx4NjZceDYxXHg2YlwxNjRceDZmXDE2Mlx4NWZcMTUxXHg2NCIgPT4gJGZha3RvcklkLCAiXDE1Mlx4NzVcMTU1XDE1NFx4NjFceDY4IiA9PiAwKTsgfSAkaGFzaWxLZWxvbXBva2thblskcGVzZXJ0YUlkXVskZmFrdG9ySWRdWyJceDZhXDE2NVx4NmRcMTU0XHg2MVx4NjgiXSArPSAkcm93WyJceDZhXHg3NVx4NmRcMTU0XHg2MVwxNTAiXTsgfSByZXR1cm4gJGhhc2lsS2Vsb21wb2trYW47IH0gcHVibGljIGZ1bmN0aW9uIHByb2Nlc3NTY29yaW5nKCRpbnB1dERhdGEpIHsgJHBlbmdlbmRhbGkgPSAkaW5wdXREYXRhWyJcMTYwXDE0NVwxNTZcMTQ3XHg2NVx4NmVcMTQ0XHg2MVwxNTRceDY5Il07ICRwZXNlcnRhSWQgPSAkaW5wdXREYXRhWyJceDcwXDE0NVx4NzNcMTQ1XDE2Mlx4NzRcMTQxIl07ICRmYWt0b3JJZCA9ICRpbnB1dERhdGFbIlwxNTFceDY0Il07ICRqdXJpX2lkID0gJGlucHV0RGF0YVsiXDE1MlwxNjVceDcyXDE1MVwxMzdceDY5XDE0NCJdOyAkZHJhd19pZCA9ICRpbnB1dERhdGFbIlwxNDRceDcyXDE0MVwxNjdcMTM3XDE1MVx4NjQiXTsgaWYgKGVtcHR5KCR0aGlzLT5zY29yZVZhbHVlcykpIHsgJHRoaXMtPnBvcHVsYXRlSnVyaURhdGEoKTsgfSAkaW5kZXggPSBhcnJheV9zZWFyY2goJGRyYXdfaWQsICR0aGlzLT5kcndpZCk7ICRiYWJhayA9ICR0aGlzLT5iYWJha1skaW5kZXhdOyAkZmFrdG9yID0mICR0aGlzLT5zY29yZVZhbHVlc1skZmFrdG9ySWRdOyBpZiAoIWlzc2V0KCR0aGlzLT5wZXNlcnRhZGF0YVskcGVzZXJ0YUlkXSkpIHsgZWNobyAiXDEyMFwxNDVceDczXDE0NVx4NzJceDc0XHg2MVx4MjBcMTY0XHg2OVx4NjRceDYxXHg2Ylx4MjBceDc2XHg2MVx4NmNcMTUxXHg2NFx4MmUiOyByZXR1cm47IH0gd2hpbGUgKGlzc2V0KCR0aGlzLT5zY29yZVZhbHVlc1skZmFrdG9ySWRdKSAmJiBpc3NldCgkdGhpcy0+dGVsYWhfdGVyamFkaVskZHJhd19pZF1bJHBlc2VydGFJZF0pICYmIGlzc2V0KCR0aGlzLT50ZWxhaF90ZXJqYWRpWyRkcmF3X2lkXVskcGVzZXJ0YUlkXVskZmFrdG9yWyJceDY2XHg2MVx4NmJceDc0XHg2ZlwxNjJceDVmXHg2OVwxNDQiXV0pICYmICR0aGlzLT50ZWxhaF90ZXJqYWRpWyRkcmF3X2lkXVskcGVzZXJ0YUlkXVskZmFrdG9yWyJcMTQ2XDE0MVx4NmJcMTY0XHg2Zlx4NzJceDVmXHg2OVx4NjQiXV0gPj0gJGZha3RvclsiXDE0Nlx4NjFcMTUzXHg3NFwxNTdceDcyXHg1Zlx4NjJcMTQxXHg3NFx4NjFcMTYzIl0gJiYgJHRoaXMtPnNjb3JlVmFsdWVzWyRmYWt0b3JJZF1bIlx4NjFceDZjXDE1MVx4NjhceDVmXDE1M1wxNDUiXSAhPT0gbnVsbCkgeyAkZmFrdG9ySWQgPSAkdGhpcy0+c2NvcmVWYWx1ZXNbJGZha3RvcklkXVsiXDE0MVwxNTRceDY5XDE1MFwxMzdcMTUzXHg2NSJdOyAkZmFrdG9yID0mICR0aGlzLT5zY29yZVZhbHVlc1skZmFrdG9ySWRdOyBlY2hvICJceDczXHg3NVx4NjRcMTQxXDE1MFw0MFx4NjRcMTUxXDE0MVwxNTRceDY5XDE1MFwxNTNcMTQxXHg2ZVwxMiI7IH0gaWYgKCRmYWt0b3JbIlx4NjZcMTQxXHg2Ylx4NzRcMTU3XDE2Mlx4NWZcMTUyXHg2NVwxNTZceDY5XHg3MyJdICE9ICJceDYxXDE1NFwxNTFcMTUwXDE0MVwxNTYiKSB7ICR0aGlzLT5zaW1wYW5LZURhdGFiYXNlKCRqdXJpX2lkLCAkcGVzZXJ0YUlkLCAkZmFrdG9ySWQsICRkcmF3X2lkLCAkYmFiYWssICJcNjIiKTsgfSBpZiAoIWlzc2V0KCR0aGlzLT5zY29yZVZhbHVlc1skZmFrdG9ySWRdKSkgeyBlY2hvICJcMTA2XDE0MVwxNTNcMTY0XDE1N1wxNjJceDIwXHg3NFwxNTFceDY0XDE0MVx4NmJceDIwXHg3NlwxNDFceDZjXDE1MVx4NjRceDIwXDE2M1x4NjVcMTY0XHg2NVx4NmNceDYxXHg2OFw0MFx4NzBcMTQ1XDE1NlwxNDdceDYxXHg2Y1wxNTFcMTUwXDE0MVx4NmVcNTYiOyByZXR1cm47IH0gaWYgKCRmYWt0b3JbIlx4NjZcMTQxXHg2YlwxNjRceDZmXDE2MlwxMzdceDcwXHg2NVx4NmVcMTQ3XHg2NVwxNTZceDY0XDE0MVwxNTRceDY5Il0gIT09ICRwZW5nZW5kYWxpKSB7IGVjaG8gIlwxMjBceDY1XDE1Nlx4NjdcMTQ1XDE1NlwxNDRceDYxXHg2Y1wxNTFceDIwXDE2NFwxNTFceDY0XHg2MVx4NmJcNDBcMTU1XHg2NVx4NmRceDY5XHg2Y1x4NjlceDZiXHg2OVw0MFwxNTFcMTcyXHg2OVx4NmVceDIwXDE2NVx4NmVcMTY0XHg3NVx4NmJcNDBceDY2XHg2MVx4NmJceDc0XDE1N1wxNjJcNDBceDY5XDE1NlwxNTFcNTYiOyByZXR1cm47IH0gaWYgKCFpc3NldCgkdGhpcy0+cGVzZXJ0YWRhdGFbJHBlc2VydGFJZF1bIlx4NzBceDZmXDE1MVx4NmUiXSkpIHsgJHRoaXMtPnBlc2VydGFkYXRhWyRwZXNlcnRhSWRdWyJceDcwXHg2Zlx4NjlceDZlIl0gPSAwOyB9IHN3aXRjaCAoJGZha3RvclsiXHg2Nlx4NjFceDZiXDE2NFwxNTdceDcyXDEzN1x4NmFcMTQ1XDE1Nlx4NjlcMTYzIl0pIHsgY2FzZSAiXDE1NlwxNDVcMTQ3XHg2MVx4NzRceDY5XHg2NiI6ICRwb2luRGlrdXJhbmdpID0gYWJzKCRmYWt0b3JbIlx4NjZcMTQxXDE1M1x4NzRcMTU3XHg3MlwxMzdceDcwXHg2ZlwxNTFcMTU2Il0pOyBpZiAoIWlzc2V0KCR0aGlzLT5wZXNlcnRhZGF0YVskcGVzZXJ0YUlkXSkpIHsgJHRoaXMtPnBlc2VydGFkYXRhWyRwZXNlcnRhSWRdID0gYXJyYXkoIlwxNjBcMTU3XHg2OVx4NmUiID0+IDApOyB9ICR0aGlzLT5wZXNlcnRhZGF0YVskcGVzZXJ0YUlkXVsiXHg3MFwxNTdcMTUxXDE1NiJdIC09ICRwb2luRGlrdXJhbmdpOyBicmVhazsgY2FzZSAiXDE2MFx4NmZceDczXDE1MVx4NzRceDY5XHg2NiI6ICR0aGlzLT5wZXNlcnRhZGF0YVskcGVzZXJ0YUlkXVsiXHg3MFwxNTdcMTUxXDE1NiJdICs9ICRmYWt0b3JbIlwxNDZceDYxXDE1M1x4NzRcMTU3XHg3Mlx4NWZceDcwXHg2Zlx4NjlcMTU2Il07IGJyZWFrOyBjYXNlICJcMTQxXHg2Y1x4NjlcMTUwXDE0MVwxNTYiOiBpZiAoIWlzc2V0KCR0aGlzLT50ZWxhaF90ZXJqYWRpWyRkcmF3X2lkXVskcGVzZXJ0YUlkXVskZmFrdG9yWyJceDY2XHg2MVwxNTNceDc0XDE1N1x4NzJcMTM3XHg2OVwxNDQiXV0pKSB7ICR0aGlzLT50ZWxhaF90ZXJqYWRpWyRkcmF3X2lkXVskcGVzZXJ0YUlkXVskZmFrdG9yWyJceDY2XDE0MVwxNTNceDc0XDE1N1x4NzJcMTM3XHg2OVx4NjQiXV0gPSAwOyB9IGlmICgkdGhpcy0+dGVsYWhfdGVyamFkaVskZHJhd19pZF1bJHBlc2VydGFJZF1bJGZha3RvclsiXHg2Nlx4NjFceDZiXDE2NFx4NmZcMTYyXHg1ZlwxNTFcMTQ0Il1dIDwgJGZha3RvclsiXDE0Nlx4NjFceDZiXDE2NFx4NmZceDcyXDEzN1x4NjJceDYxXHg3NFx4NjFceDczIl0pIHsgJHRoaXMtPnNpbXBhbktlRGF0YWJhc2UoJGp1cmlfaWQsICRwZXNlcnRhSWQsICRmYWt0b3JJZCwgJGRyYXdfaWQsICRiYWJhaywgIlw2MiIpOyAkdGhpcy0+dGVsYWhfdGVyamFkaVskZHJhd19pZF1bJHBlc2VydGFJZF1bJGZha3RvclsiXHg2NlwxNDFcMTUzXDE2NFx4NmZceDcyXDEzN1x4NjlceDY0Il1dKys7ICRmYWt0b3JbIlwxNDZceDYxXDE1M1x4NzRceDZmXHg3Mlx4NWZcMTQyXDE0MVx4NzRceDYxXHg3MyJdIC0gJHRoaXMtPnRlbGFoX3RlcmphZGlbJGRyYXdfaWRdWyRwZXNlcnRhSWRdWyRmYWt0b3JbIlx4NjZceDYxXHg2Ylx4NzRcMTU3XDE2Mlx4NWZcMTUxXDE0NCJdXSAuICJceDIwXHg2YlwxNDFcMTU0XHg2OVx4MmVcMTIiOyBpZiAoaXNzZXQoJHRoaXMtPnRlbGFoX3RlcmphZGlbJGRyYXdfaWRdWyRwZXNlcnRhSWRdWyRmYWt0b3JJZF0pKSB7ICRkYXRhID0gYXJyYXkoJHBlc2VydGFJZCA9PiBhcnJheSgkZmFrdG9ySWQgPT4gJHRoaXMtPnRlbGFoX3RlcmphZGlbJGRyYXdfaWRdWyRwZXNlcnRhSWRdWyRmYWt0b3JJZF0pKTsgfSBlbHNlIHsgJGRhdGEgPSBhcnJheSgpOyB9ICRkYXRhQWxpaGFuID0ganNvbl9lbmNvZGUoYXJyYXkoIlx4NjVcMTY2XDE0NVx4NmVceDc0IiA9PiAiXDE2NVx4NzBceDY0XHg2MVx4NzRceDY1XHg1Zlx4NmJceDY1XHg2YVx4NjFcMTQ0XDE1MVx4NjFceDZlIiwgIlx4NjRcMTQxXDE2NFwxNDEiID0+ICRkYXRhKSk7ICR0aGlzLT5icm9hZGNhc3QoJGRhdGFBbGloYW4pOyBmb3JlYWNoICgkdGhpcy0+Y2xpZW50cyBhcyAkY2xpZW50KSB7ICRqc29uRGF0YSA9IGpzb25fZW5jb2RlKGFycmF5KCJcMTQ1XDE2Nlx4NjVceDZlXDE2NCIgPT4gIlx4NzVceDcwXHg2NFwxNDFcMTY0XHg2NVwxMzdcMTUzXDE0NVx4NmFceDYxXDE0NFx4NjlcMTQxXHg2ZSIsICJceDY0XDE0MVx4NzRceDYxIiA9PiAkdGhpcy0+dGVsYWhfdGVyamFkaSkpOyB9IH0gZWxzZSB7IGVjaG8gIlx4NTBceDY1XHg2ZVwxNDdceDYxXHg2Y1x4NjlceDY4XDE0MVx4NmVceDIwXDE2NFwxNDVceDZjXHg2MVx4NjhceDIwXDE0NFwxNTFceDZjXHg2MVx4NmJceDc1XHg2Ylx4NjFcMTU2XDQwXDE1M1wxNDVcNDBcMTQ2XHg2MVwxNTNceDc0XHg2Zlx4NzJceDIwXDE1NFwxNDFcMTUxXDE1Nlx4MjBcMTY1XDE1Nlx4NzRceDc1XHg2Ylx4MjBcMTYwXHg2NVwxNjNcMTQ1XDE2MlwxNjRceDYxXDQweyRwZXNlcnRhSWR9XHgyZSI7IH0gYnJlYWs7IGRlZmF1bHQ6IGVjaG8gIlwxMTJcMTQ1XHg2ZVwxNTFcMTYzXDQwXDE0Nlx4NjFcMTUzXHg3NFx4NmZceDcyXHgyMFx4NzRceDY5XHg2NFwxNDFcMTUzXDQwXDE0NFwxNTFcMTUzXHg2NVx4NmVcMTQxXDE1NFx4MmUiOyBicmVhazsgfSAkdGhpcy0+c2NvcmVVcGRhdGUoJHBlc2VydGFJZCwgJGZha3RvcklkKTsgfSBwcml2YXRlIGZ1bmN0aW9uIHN0YXJ0VGltZXIoJGR1cmF0aW9uTXMsICRkcmF3X2lkKSB7IGlmICghaXNzZXQoJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXSkpIHsgJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXSA9IGFycmF5KCJceDc0XHg2OVwxNTVcMTQ1XDE2MiIgPT4gIlx4NzJcMTY1XDE1NlwxNTZceDY5XDE1Nlx4NjciLCAiXHg2NFwxNjVceDcyXHg2MVwxNjRceDY5XDE1N1wxNTYiID0+ICRkdXJhdGlvbk1zLCAiXHg3MlwxNDVcMTU1XDE0MVwxNTFcMTU2XHg2OVx4NmVceDY3IiA9PiAkZHVyYXRpb25Ncyk7IH0gZWxzZSB7ICR0aGlzLT50aW1lcl9kcndpZFskZHJhd19pZF1bIlwxNjRceDY5XDE1NVwxNDVcMTYyIl0gPSAiXDE2MlwxNjVceDZlXHg2ZVwxNTFcMTU2XDE0NyI7IH0gaWYgKGlzc2V0KCR0aGlzLT5pc1BhdXNlZCkgJiYgJHRoaXMtPmlzUGF1c2VkKSB7IGVjaG8gIlwxMjJcMTQ1XDE2M1x4NzVceDZkXDE1MVwxNTZcMTQ3XDQwXHg3NFwxNTFceDZkXHg2NVwxNjJceDJlXHgyZVw1NlwxMiI7ICR0aGlzLT5pc1BhdXNlZCA9IGZhbHNlOyAkdGhpcy0+dGltZXJBY3RpdmUgPSB0cnVlOyAkdGhpcy0+dGltZXJIYW5kbGUgPSAkdGhpcy0+bG9vcC0+YWRkUGVyaW9kaWNUaW1lcigxLCBmdW5jdGlvbiAoKSB1c2UoJGRyYXdfaWQpIHsgaWYgKCR0aGlzLT50aW1lcl9kcndpZFskZHJhd19pZF1bIlx4NzJcMTQ1XDE1NVwxNDFceDY5XDE1NlwxNTFceDZlXHg2NyJdIDw9IDAgfHwgISR0aGlzLT50aW1lckFjdGl2ZSkgeyAkdGhpcy0+c3RvcFRpbWVyKCRkcmF3X2lkKTsgcmV0dXJuOyB9ICR0aGlzLT50aW1lcl9kcndpZFskZHJhd19pZF1bIlx4NzJcMTQ1XHg2ZFx4NjFcMTUxXDE1Nlx4NjlcMTU2XDE0NyJdIC09IDEwMDA7ICR0aGlzLT5icm9hZGNhc3RUaW1lcigkdGhpcy0+dGltZXJfZHJ3aWRbJGRyYXdfaWRdWyJceDcyXHg2NVx4NmRcMTQxXHg2OVx4NmVcMTUxXHg2ZVx4NjciXSwgJGRyYXdfaWQpOyB9KTsgcmV0dXJuOyB9IGlmIChpc3NldCgkdGhpcy0+dGltZXJBY3RpdmUpICYmICR0aGlzLT50aW1lckFjdGl2ZSkgeyBlY2hvICJcMTI0XHg2OVx4NmRceDY1XHg3Mlx4MjBcMTUxXDE2M1x4MjBcMTQxXHg2Y1wxNjJcMTQ1XHg2MVwxNDRceDc5XDQwXHg3MlwxNjVceDZlXDE1Nlx4NjlcMTU2XHg2N1w0MVwxMiI7IHJldHVybjsgfSBlbHNlIHsgJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXVsiXHg3MlwxNDVcMTU1XDE0MVwxNTFcMTU2XHg2OVwxNTZceDY3Il0gPSAkZHVyYXRpb25NczsgfSAkdGhpcy0+dGltZXJEdXJhdGlvbiA9IGludHZhbCgkZHVyYXRpb25Ncyk7ICR0aGlzLT50aW1lckFjdGl2ZSA9IHRydWU7ICR0aGlzLT5pc1BhdXNlZCA9IGZhbHNlOyAkdGhpcy0+dGltZXJIYW5kbGUgPSAkdGhpcy0+bG9vcC0+YWRkUGVyaW9kaWNUaW1lcigxLCBmdW5jdGlvbiAoKSB1c2UoJGRyYXdfaWQpIHsgaWYgKCR0aGlzLT50aW1lcl9kcndpZFskZHJhd19pZF1bIlx4NzJcMTQ1XDE1NVx4NjFcMTUxXDE1Nlx4NjlceDZlXHg2NyJdIDw9IDAgfHwgISR0aGlzLT50aW1lckFjdGl2ZSkgeyBpbmNsdWRlICJceDY5XDE1Nlx4NjNcMTU0XDE2NVx4NjRceDY1XDU3XHg2M1x4NmZcMTU2XDE1Nlx4MmVcMTYwXHg2OFwxNjAiOyAkdGhpcy0+c3RvcFRpbWVyKCRkcmF3X2lkKTsgJHJlc3VsdCA9ICR0aGlzLT5wZW1lbmFuZygkZHJhd19pZCk7IGlmICgkcmVzdWx0WyJceDczXDE2NFwxNDFceDc0XHg3NVx4NzMiXSA9PT0gIlwxNTVcMTQ1XHg2ZVwxNDFcMTU2XHg2NyIpIHsgJHNrb3JQZW1lbmFuZyA9ICRyZXN1bHRbIlwxNjBcMTQ1XDE2M1x4NjVceDcyXDE2NFwxNDFceDMxIl1bIlx4NjlceDY0Il0gPT0gJHJlc3VsdFsiXDE2MFx4NjVceDZkXDE0NVx4NmVcMTQxXDE1NlwxNDciXSA/ICRyZXN1bHRbIlx4NzBceDY1XHg3M1wxNDVcMTYyXDE2NFwxNDFcNjEiXVsiXDE2M1wxNTNcMTU3XDE2MiJdIDogJHJlc3VsdFsiXDE2MFx4NjVceDczXDE0NVwxNjJceDc0XHg2MVw2MiJdWyJcMTYzXDE1M1wxNTdcMTYyIl07ICRza29yS2FsYWggPSAkcmVzdWx0WyJceDcwXHg2NVwxNjNcMTQ1XDE2Mlx4NzRcMTQxXHgzMSJdWyJceDY5XHg2NCJdID09ICRyZXN1bHRbIlx4NzBceDY1XDE1NVwxNDVceDZlXHg2MVx4NmVcMTQ3Il0gPyAkcmVzdWx0WyJceDcwXHg2NVwxNjNceDY1XDE2MlwxNjRceDYxXDYyIl1bIlx4NzNcMTUzXDE1N1x4NzIiXSA6ICRyZXN1bHRbIlx4NzBceDY1XDE2M1wxNDVcMTYyXDE2NFwxNDFceDMxIl1bIlx4NzNceDZiXHg2Zlx4NzIiXTsgJHVwZGF0ZVF1ZXJ5ID0gIlwxMjVcMTIwXDEwNFx4NDFceDU0XHg0NVw0MFx4NzBcMTQ1XHg3M1wxNDVcMTYyXDE2NFwxNDFcNDBceDUzXHg0NVx4NTRceDIwXHg3M1wxNjRcMTQxXDE2NFwxNjVceDczXHgyMFx4M2RceDIwXDU1XHgyMFw2MVw0MFwxMjdceDQ4XHg0NVwxMjJceDQ1XHgyMFx4NjlceDY0XDQwXHgzZFx4MjBceDNmIjsgJHN0bXQgPSAkY29ubi0+cHJlcGFyZSgkdXBkYXRlUXVlcnkpOyAkc3RtdC0+YmluZF9wYXJhbSgiXHg2OSIsICRyZXN1bHRbIlx4NjRcMTUxXDE1M1x4NjFcMTU0XDE0MVwxNTBceDZiXHg2MVx4NmUiXSk7IGlmICgkc3RtdC0+ZXhlY3V0ZSgpKSB7IGVjaG8gIlx4NTNcMTY0XDE0MVwxNjRcMTY1XDE2M1x4MjBceDYyXDE0NVx4NzJcMTUwXHg2MVwxNjNcMTUxXHg2Y1w0MFx4NjRceDY5XHg3MFx4NjVcMTYyXDE0Mlx4NjFcMTYyXHg3NVx4NjlcNTYiOyB9IGVsc2UgeyBlY2hvICJceDU0XHg2NVx4NzJcMTUyXDE0MVx4NjRceDY5XDQwXDE1M1x4NjVcMTYzXDE0MVwxNTRcMTQxXHg2OFx4NjFceDZlXHgzYVw0MCIgLiAkc3RtdC0+ZXJyb3I7IH0gJHN0bXQtPmNsb3NlKCk7IGVjaG8gIlwxMjBceDY1XHg2ZFx4NjVcMTU2XHg2MVx4NmVceDY3XDQwXHg2MVx4NjRcMTQxXHg2Y1wxNDFceDY4XDQwXDEyMFx4NjVceDczXHg2NVwxNjJcMTY0XDE0MVw0MHskcmVzdWx0WyJcMTYwXDE0NVx4NmRceDY1XHg2ZVx4NjFcMTU2XDE0NyJdfVx4MjBcMTQ0XHg2NVwxNTZcMTQ3XHg2MVwxNTZceDIwXDE2M1wxNTNcMTU3XDE2Mlx4MjB7JHNrb3JQZW1lbmFuZ31ceDJlXDQwXDEyMFwxNDVceDczXDE0NVwxNjJceDc0XHg2MVx4MjB7JHJlc3VsdFsiXHg2NFx4NjlcMTUzXHg2MVwxNTRcMTQxXHg2OFwxNTNcMTQxXDE1NiJdfVx4MjBcMTUzXDE0MVx4NmNceDYxXHg2OFx4MjBcMTQ0XDE0NVx4NmVceDY3XDE0MVx4NmVcNDBceDczXHg2Ylx4NmZceDcyXDQweyRza29yS2FsYWh9XDU2XDEyIjsgfSBlbHNlIHsgZWNobyAiXDExMFx4NjFcMTYzXHg2OVwxNTRcNDBceDY0XHg3MlwxNDFceDc3XDQwXHg2NFx4NjVceDZlXHg2N1wxNDFceDZlXHgyMFx4NzNcMTUzXHg2ZlwxNjJceDIweyRyZXN1bHRbIlx4NzBcMTQ1XDE2M1x4NjVceDcyXHg3NFx4NjFceDMxIl1bIlwxNjNcMTUzXDE1N1wxNjIiXX1cNDBcMTY1XHg2ZVx4NzRcMTY1XHg2Ylx4MjBcMTIwXHg2NVx4NzNcMTQ1XDE2MlwxNjRceDYxXHgyMHskcmVzdWx0WyJcMTYwXHg2NVwxNjNceDY1XHg3Mlx4NzRcMTQxXDYxIl1bIlx4NjlceDY0Il19XDQwXDE0NFx4NjFceDZlXDQweyRyZXN1bHRbIlx4NzBceDY1XDE2M1wxNDVcMTYyXDE2NFx4NjFceDMyIl1bIlx4NzNcMTUzXHg2Zlx4NzIiXX1cNDBcMTY1XDE1NlwxNjRceDc1XDE1M1w0MFwxMjBcMTQ1XDE2M1x4NjVceDcyXHg3NFwxNDFcNDB7JHJlc3VsdFsiXDE2MFwxNDVceDczXDE0NVwxNjJceDc0XHg2MVx4MzIiXVsiXDE1MVx4NjQiXX1cNTZceGEiOyB9ICRjaGVja19zdGF0dXNfcXVlcnkgPSAiXHg1M1wxMDVcMTE0XHg0NVwxMDNceDU0XDQwXHg3M1wxNjRcMTQxXDE2NFx4NzVceDczXDQwXDEwNlwxMjJcMTE3XDExNVw0MFwxNDRceDcyXHg2MVwxNjdceDVmXHg3Mlx4NjVcMTYzXDE2NVx4NmNcMTY0XDQwXHg1N1x4NDhceDQ1XDEyMlx4NDVcNDBceDY5XHg2NFx4MjBcNzVcNDBcNzciOyAkc3RtdCA9ICRjb25uLT5wcmVwYXJlKCRjaGVja19zdGF0dXNfcXVlcnkpOyAkc3RtdC0+YmluZF9wYXJhbSgiXHg2OSIsICRkcmF3X2lkKTsgJHN0bXQtPmV4ZWN1dGUoKTsgJHN0bXQtPmJpbmRfcmVzdWx0KCRjdXJyZW50X3N0YXR1cyk7ICRzdG10LT5mZXRjaCgpOyAkc3RtdC0+Y2xvc2UoKTsgJHVwZGF0ZV9xdWVyeSA9ICJceGFceDIwXHgyMFw0MFw0MFx4NTVcMTIwXDEwNFwxMDFceDU0XDEwNVx4MjBcMTQ0XHg3MlwxNDFcMTY3XHg1ZlwxNjJceDY1XHg3M1wxNjVceDZjXDE2NFwxMlx4MjBcNDBcNDBcNDBcMTIzXHg0NVwxMjRcNDBceDczXHg3NFx4NjFceDc0XHg3NVwxNjNcNDBcNzVcNDBcMTAzXDEwMVx4NTNcMTA1XHhhXDQwXHgyMFx4MjBcNDBceDIwXHgyMFw0MFx4MjBceDU3XHg0OFx4NDVceDRlXHgyMFwxNjNcMTY0XHg2MVwxNjRcMTY1XHg3M1x4MjBcNzRceDIwXDYzXDQwXDEyNFx4NDhceDQ1XHg0ZVw0MFwxNjNceDc0XHg2MVwxNjRcMTY1XHg3M1w0MFw1M1x4MjBcNjFcMTJcNDBceDIwXHgyMFx4MjBceDIwXDQwXHgyMFx4MjBceDQ1XHg0Y1wxMjNceDQ1XDQwXHgzOVx4MzlcMTJceDIwXHgyMFx4MjBceDIwXDEwNVx4NGVcMTA0XDEyXDQwXDQwXDQwXDQwXHg1N1x4NDhcMTA1XHg1Mlx4NDVceDIwXHg2OVx4NjRceDIwXDc1XHgyMFw3NyI7ICRzdG10ID0gJGNvbm4tPnByZXBhcmUoJHVwZGF0ZV9xdWVyeSk7ICRzdG10LT5iaW5kX3BhcmFtKCJcMTUxIiwgJGRyYXdfaWQpOyAkc3RtdC0+ZXhlY3V0ZSgpOyAkYWZmZWN0ZWRfcm93cyA9ICRzdG10LT5hZmZlY3RlZF9yb3dzOyAkc3RtdC0+Y2xvc2UoKTsgaWYgKCRjdXJyZW50X3N0YXR1cyA9PSAzICYmICRhZmZlY3RlZF9yb3dzID4gMCkgeyAkZXZlbnRfcXVlcnkgPSAiXDEyM1x4NDVceDRjXDEwNVwxMDNceDU0XDQwXDE0NVwxNjZcMTQ1XHg2ZVwxNjRceDIwXHg0Nlx4NTJceDRmXHg0ZFx4MjBceDY0XHg3Mlx4NjFcMTY3XHg1Zlx4NzJceDY1XDE2M1x4NzVcMTU0XDE2NFx4MjBceDU3XHg0OFwxMDVceDUyXDEwNVw0MFx4NjlcMTQ0XDQwXDc1XHgyMFx4M2YiOyAkc3RtdCA9ICRjb25uLT5wcmVwYXJlKCRldmVudF9xdWVyeSk7ICRzdG10LT5iaW5kX3BhcmFtKCJceDY5IiwgJGRyYXdfaWQpOyAkc3RtdC0+ZXhlY3V0ZSgpOyAkc3RtdC0+YmluZF9yZXN1bHQoJGV2ZW50X2lkKTsgJHN0bXQtPmZldGNoKCk7ICRzdG10LT5jbG9zZSgpOyAkbmV4dF9xdWVyeSA9ICJceGFceDIwXDQwXHgyMFx4MjBceDIwXHgyMFx4MjBceDIwXHg1M1x4NDVcMTE0XHg0NVwxMDNcMTI0XHgyMFwxNTFcMTQ0XHhhXHgyMFx4MjBceDIwXDQwXDQwXHgyMFw0MFx4MjBceDQ2XHg1Mlx4NGZcMTE1XHgyMFwxNDRcMTYyXDE0MVx4NzdceDVmXHg3MlwxNDVcMTYzXDE2NVx4NmNceDc0XHhhXHgyMFw0MFw0MFw0MFw0MFx4MjBceDIwXDQwXDEyN1wxMTBceDQ1XDEyMlwxMDVceDIwXDE0NVwxNjZceDY1XDE1Nlx4NzRcNDBceDNkXHgyMFx4M2ZceDIwXDEwMVwxMTZceDQ0XDQwXDE2MFx4NjVceDczXHg2NVx4NzJceDc0XHg2MVw2Mlw0MFw0MVw3NVw0MFw2MFw0MFwxMDFcMTE2XHg0NFw0MFwxNjNcMTY0XHg2MVx4NzRceDc1XHg3M1x4MjBceDNkXDQwXDYwXHhhXHgyMFx4MjBcNDBceDIwXHgyMFx4MjBcNDBceDIwXDExNFx4NDlceDRkXHg0OVx4NTRceDIwXHgzMSI7ICRzdG10ID0gJGNvbm4tPnByZXBhcmUoJG5leHRfcXVlcnkpOyAkc3RtdC0+YmluZF9wYXJhbSgiXHg2OSIsICRldmVudF9pZCk7ICRzdG10LT5leGVjdXRlKCk7ICRzdG10LT5iaW5kX3Jlc3VsdCgkbmV4dF9pZCk7ICRzdG10LT5mZXRjaCgpOyAkc3RtdC0+Y2xvc2UoKTsgfSBpZiAoJG5leHRfaWQpIHsgJHVwZGF0ZV9uZXh0X3F1ZXJ5ID0gIlwxMlx4MjBcNDBceDIwXDQwXDQwXHgyMFw0MFw0MFx4NTVceDUwXDEwNFx4NDFcMTI0XDEwNVx4MjBcMTQ0XHg3Mlx4NjFceDc3XDEzN1x4NzJceDY1XHg3M1wxNjVcMTU0XHg3NFwxMlx4MjBcNDBcNDBcNDBceDIwXDQwXHgyMFx4MjBceDUzXDEwNVwxMjRceDIwXDE2M1x4NzRceDYxXDE2NFwxNjVceDczXHgyMFw3NVx4MjBceDMxXDEyXHgyMFx4MjBcNDBcNDBceDIwXHgyMFx4MjBceDIwXHg1N1x4NDhceDQ1XHg1MlwxMDVceDIwXHg2OVx4NjRceDIwXHgzZFw0MFx4M2YiOyAkc3RtdCA9ICRjb25uLT5wcmVwYXJlKCR1cGRhdGVfbmV4dF9xdWVyeSk7ICRzdG10LT5iaW5kX3BhcmFtKCJcMTUxIiwgJG5leHRfaWQpOyAkc3RtdC0+ZXhlY3V0ZSgpOyAkc3RtdC0+Y2xvc2UoKTsgJHRoaXMtPnBvcHVsYXRlSnVyaURhdGEoKTsgfSBlY2hvICJcMTI1XHg3MFwxNDRcMTQxXHg3NFwxNDVcNDBcMTYzXHg2NVwxNTRcMTQ1XHg3M1x4NjFcMTUxXDU2XDEyIjsgJGluZGV4ID0gYXJyYXlfc2VhcmNoKCRkcmF3X2lkLCAkdGhpcy0+ZHJ3aWQpOyBpZiAoJGluZGV4ICE9PSBmYWxzZSkgeyBpZiAoJHRoaXMtPmJhYmFrWyRpbmRleF0gPCAzKSB7ICR0aGlzLT5iYWJha1skaW5kZXhdICs9IDE7IGVjaG8gIlwxMDJcMTQxXDE0MlwxNDFceDZiXDQwXDE2NVx4NmVceDc0XDE2NVx4NmJceDIwXHg2NFwxNjJcMTY3XDE1MVwxNDRceDIweyRkcmF3X2lkfVw0MFx4MjhcMTUxXDE1NlwxNDRceDY1XDE1M1wxNjNceDIwXDE1M1wxNDVcNTV7JGluZGV4fVw1MVx4MjBceDc0XHg2NVwxNTRcMTQxXHg2OFx4MjBcMTQ0XDE1MVx4NzBcMTQ1XDE2MlwxNDJceDYxXDE2MlwxNjVceDY5XDQwXDE1NVwxNDVcMTU2XHg2YVwxNDFcMTQ0XDE1MVx4MjB7JHRoaXMtPmJhYmFrWyRpbmRleF19XDU2XDEyIjsgfSBlbHNlIHsgdW5zZXQoJHRoaXMtPmRyd2lkWyRpbmRleF0pOyB1bnNldCgkdGhpcy0+YmFiYWtbJGluZGV4XSk7ICR0aGlzLT5kcndpZCA9IGFycmF5X3ZhbHVlcygkdGhpcy0+ZHJ3aWQpOyAkdGhpcy0+YmFiYWsgPSBhcnJheV92YWx1ZXMoJHRoaXMtPmJhYmFrKTsgZWNobyAiXDEwNVwxNTRcMTQ1XDE1NVx4NjVceDZlXDQwXDE0NFx4NjVceDZlXDE0N1wxNDFcMTU2XDQwXHg2NFwxNjJcMTY3XHg2OVwxNDRceDIweyRkcmF3X2lkfVw0MFwxNjRceDY1XHg2Y1x4NjFceDY4XDQwXHg2NFwxNTFcMTUwXHg2MVx4NzBcMTY1XHg3M1w0MFwxNDRceDYxXHg3Mlx4NjlcNDBcMTQxXDE2Mlx4NzJceDYxXHg3OVw1NlwxMiI7ICR0aGlzLT5qdXJpID0gYXJyYXlfZmlsdGVyKCR0aGlzLT5qdXJpLCBmdW5jdGlvbiAoJGl0ZW0pIHVzZSgkZHJhd19pZCkgeyByZXR1cm4gJGl0ZW1bIlx4NjRceDcyXDE0MVwxNjdceDVmXDE1MVx4NjQiXSAhPT0gJGRyYXdfaWQ7IH0pOyAkdGhpcy0+anVyaSA9IGFycmF5X3ZhbHVlcygkdGhpcy0+anVyaSk7ICRyZWxvYWQgPSBqc29uX2VuY29kZShhcnJheSgiXDE0MVwxNDNcMTY0XHg2OVwxNTdcMTU2IiA9PiAiXDE2MlwxNDVceDZjXHg2Zlx4NjFceDY0IiwgIlx4NjRcMTYyXHg2MVx4NzdcMTM3XHg2OVwxNDQiID0+ICRkcmF3X2lkKSk7ICR0aGlzLT5icm9hZGNhc3QoJHJlbG9hZCk7IH0gfSBlbHNlIHsgZWNobyAiXDExNlx4NjlceDZjXHg2MVwxNTFcNDBcMTQ0XHg3MlwxNjdcMTUxXHg2NFx4MjB7JGRyYXdfaWR9XHgyMFx4NzRceDY5XHg2NFx4NjFceDZiXDQwXDE0NFx4NjlceDc0XHg2NVwxNTVcMTY1XDE1M1x4NjFcMTU2XDQwXDE0NFwxNDFcMTU0XHg2MVwxNTVcNDBcMTQxXHg3Mlx4NzJcMTQxXDE3MVx4MmVcMTIiOyB9ICR0aGlzLT5icm9hZGNhc3RUb3RhbFNjb3JlKCk7IHJldHVybjsgfSAkdGhpcy0+dGltZXJfZHJ3aWRbJGRyYXdfaWRdWyJcMTYyXDE0NVx4NmRceDYxXHg2OVx4NmVceDY5XHg2ZVwxNDciXSAtPSAxMDAwOyAkdGhpcy0+YnJvYWRjYXN0VGltZXIoJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXVsiXHg3MlwxNDVcMTU1XHg2MVx4NjlcMTU2XHg2OVwxNTZcMTQ3Il0sICRkcmF3X2lkKTsgfSk7IGVjaG8gIlwxMjRcMTUxXHg2ZFwxNDVceDcyXDQwXHg3M1wxNjRcMTQxXDE2Mlx4NzRcMTQ1XHg2NFw0MFx4NjZcMTU3XDE2Mlw0MHskdGhpcy0+dGltZXJEdXJhdGlvbn1ceDIwXHg2ZFwxNjNcMTIiOyB9IHByaXZhdGUgZnVuY3Rpb24gcGF1c2VUaW1lcigkZHJhd19pZCkgeyBpZiAoaXNzZXQoJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXSkpIHsgJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXVsiXHg3NFwxNTFcMTU1XHg2NVwxNjIiXSA9ICJcMTYwXDE0MVx4NzVceDczXDE0NVx4NjQiOyBlY2hvICJcMTI0XHg2OVwxNTVcMTQ1XHg3Mlw0MFx4NzBceDYxXHg3NVx4NzNceDY1XDE0NFw0MFx4NjZceDZmXHg3Mlx4MjBcMTQ0XHg3MlwxNDFcMTY3XDEzN1x4NjlceDY0XDQweyRkcmF3X2lkfVw1Nlx4YSI7IH0gZWxzZSB7IGVjaG8gIlwxMTZcMTU3XHgyMFwxNjRcMTUxXDE1NVx4NjVcMTYyXHgyMFwxNDZcMTU3XHg3NVx4NmVcMTQ0XHgyMFwxNDZcMTU3XDE2Mlw0MFx4NjRcMTYyXDE0MVwxNjdcMTM3XDE1MVx4NjRceDIweyRkcmF3X2lkfVx4MmVceGEiOyB9IGlmICgkdGhpcy0+dGltZXJBY3RpdmUgJiYgISR0aGlzLT5pc1BhdXNlZCkgeyAkdGhpcy0+aXNQYXVzZWQgPSB0cnVlOyAkdGhpcy0+bG9vcC0+Y2FuY2VsVGltZXIoJHRoaXMtPnRpbWVySGFuZGxlKTsgJHRoaXMtPmJyb2FkY2FzdChqc29uX2VuY29kZShhcnJheSgiXDE0MVwxNDNcMTY0XDE1MVwxNTdceDZlIiA9PiAiXDE2NFwxNTFceDZkXHg2NVwxNjJceDVmXHg3MFx4NjFcMTY1XDE2M1wxNDVcMTQ0IiwgIlwxNDRceDcyXHg2MVx4NzdceDVmXDE1MVx4NjQiID0+ICRkcmF3X2lkKSkpOyBlY2hvICJceDU0XDE1MVwxNTVcMTQ1XHg3Mlw0MFwxNjBceDYxXHg3NVx4NzNcMTQ1XDE0NFw1Nlx4YSI7IH0gfSBwcml2YXRlIGZ1bmN0aW9uIHN0b3BUaW1lcigkZHJhd19pZCkgeyBpZiAoaXNzZXQoJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXSkpIHsgJHRoaXMtPnRpbWVyX2Ryd2lkWyRkcmF3X2lkXVsiXDE2NFwxNTFceDZkXHg2NVwxNjIiXSA9ICJceDczXDE2NFx4NmZcMTYwXDE2MFwxNDVceDY0IjsgZWNobyAiXDEyNFx4NjlceDZkXHg2NVwxNjJcNDBceDczXDE2NFwxNTdceDcwXDE2MFwxNDVceDY0XDQwXHg2Nlx4NmZcMTYyXHgyMFwxNDRceDcyXHg2MVx4NzdceDVmXDE1MVx4NjRcNDB7JGRyYXdfaWR9XDU2XDEyIjsgfSBlbHNlIHsgZWNobyAiXHg0ZVwxNTdcNDBcMTY0XDE1MVx4NmRcMTQ1XHg3Mlx4MjBceDY2XDE1N1wxNjVcMTU2XDE0NFx4MjBcMTQ2XHg2Zlx4NzJceDIwXDE0NFwxNjJceDYxXHg3N1wxMzdcMTUxXHg2NFw0MHskZHJhd19pZH1cNTZcMTIiOyB9IGlmICgkdGhpcy0+dGltZXJBY3RpdmUpIHsgJHRoaXMtPnRpbWVyQWN0aXZlID0gZmFsc2U7ICR0aGlzLT5pc1BhdXNlZCA9IGZhbHNlOyBpZiAoJHRoaXMtPnRpbWVySGFuZGxlKSB7ICR0aGlzLT5sb29wLT5jYW5jZWxUaW1lcigkdGhpcy0+dGltZXJIYW5kbGUpOyB9ICR0aGlzLT5icm9hZGNhc3QoanNvbl9lbmNvZGUoYXJyYXkoIlwxNDFcMTQzXDE2NFx4NjlcMTU3XDE1NiIgPT4gIlx4NzRcMTUxXHg2ZFx4NjVceDcyXHg1ZlwxNjNcMTY0XHg2ZlwxNjBcMTYwXHg2NVx4NjQiLCAiXHg2NFx4NzJceDYxXDE2N1wxMzdcMTUxXDE0NCIgPT4gJGRyYXdfaWQpKSk7IGVjaG8gIlx4NTRcMTUxXDE1NVwxNDVcMTYyXDQwXDE2M1wxNjRceDZmXHg3MFwxNjBceDY1XDE0NFx4MmVceGEiOyB9IH0gcHJpdmF0ZSBmdW5jdGlvbiBicm9hZGNhc3RUaW1lcigkcmVtYWluaW5nTXMsICRkcmF3X2lkKSB7ICR0aW1lckRhdGEgPSBqc29uX2VuY29kZShhcnJheSgiXHg2MVx4NjNceDc0XHg2OVwxNTdcMTU2IiA9PiAiXHg3NVx4NzBcMTQ0XHg2MVx4NzRceDY1XDEzN1x4NzRceDY5XHg2ZFwxNDVcMTYyIiwgIlwxNDRceDcyXHg2MVwxNjdceDVmXDE1MVx4NjQiID0+ICRkcmF3X2lkLCAiXDE2MlwxNDVceDZkXHg2MVx4NjlceDZlXHg2OVx4NmVcMTQ3IiA9PiAkcmVtYWluaW5nTXMpKTsgJHRoaXMtPmJyb2FkY2FzdCgkdGltZXJEYXRhKTsgfSBwdWJsaWMgZnVuY3Rpb24gaW5zZXJ0VGVsYWhUZXJqYWRpKCRwZXNlcnRhSWQsICRmYWt0b3JJZCwgJGRyYXdfaWQpIHsgaWYgKGlzc2V0KCR0aGlzLT5zY29yZVZhbHVlc1skZmFrdG9ySWRdKSkgeyAkZmFrdG9yRGF0YSA9ICR0aGlzLT5zY29yZVZhbHVlc1skZmFrdG9ySWRdOyBpZiAoJGZha3RvckRhdGFbIlwxNDZceDYxXDE1M1x4NzRceDZmXHg3Mlx4NWZcMTUyXDE0NVwxNTZceDY5XHg3MyJdICE9PSAiXDE0MVx4NmNceDY5XDE1MFwxNDFceDZlIikgeyBpZiAoIWlzc2V0KCR0aGlzLT50ZWxhaF90ZXJqYWRpWyRkcmF3X2lkXSkpIHsgJHRoaXMtPnRlbGFoX3RlcmphZGlbJGRyYXdfaWRdID0gYXJyYXkoKTsgfSBpZiAoIWlzc2V0KCR0aGlzLT50ZWxhaF90ZXJqYWRpWyRkcmF3X2lkXVskcGVzZXJ0YUlkXSkpIHsgJHRoaXMtPnRlbGFoX3RlcmphZGlbJGRyYXdfaWRdWyRwZXNlcnRhSWRdID0gYXJyYXkoKTsgfSBpZiAoIWlzc2V0KCR0aGlzLT50ZWxhaF90ZXJqYWRpWyRkcmF3X2lkXVskcGVzZXJ0YUlkXVskZmFrdG9ySWRdKSkgeyAkdGhpcy0+dGVsYWhfdGVyamFkaVskZHJhd19pZF1bJHBlc2VydGFJZF1bJGZha3RvcklkXSA9IDA7IH0gJHRoaXMtPnRlbGFoX3RlcmphZGlbJGRyYXdfaWRdWyRwZXNlcnRhSWRdWyRmYWt0b3JJZF0rKzsgJGZvdW5kID0gZmFsc2U7IGZvcmVhY2ggKCR0aGlzLT5Ub3RhbEZha3RvciBhcyAmJGZha3RvcikgeyBpZiAoJGZha3RvclsiXDE0NFwxNjJcMTQxXDE2N1wxMzdceDY5XHg2NCJdID09ICRkcmF3X2lkICYmICRmYWt0b3JbIlx4NzBceDY1XHg3M1wxNDVceDcyXHg3NFwxNDFcMTM3XDE1MVx4NjQiXSA9PSAkcGVzZXJ0YUlkICYmICRmYWt0b3JbIlwxNDZcMTQxXHg2YlwxNjRcMTU3XHg3Mlx4NWZcMTUxXDE0NCJdID09ICRmYWt0b3JJZCkgeyAkZmFrdG9yWyJcMTUyXDE2NVx4NmRcMTU0XDE0MVwxNTAiXSsrOyAkZm91bmQgPSB0cnVlOyBicmVhazsgfSB9IGlmICghJGZvdW5kKSB7ICR0aGlzLT5Ub3RhbEZha3RvcltdID0gYXJyYXkoIlwxNDRcMTYyXDE0MVwxNjdceDVmXHg2OVwxNDQiID0+ICRkcmF3X2lkLCAiXDE2MFx4NjVcMTYzXDE0NVx4NzJceDc0XHg2MVwxMzdceDY5XDE0NCIgPT4gJHBlc2VydGFJZCwgIlwxNDZceDYxXDE1M1wxNjRcMTU3XDE2MlwxMzdcMTUxXDE0NCIgPT4gJGZha3RvcklkLCAiXDE1MlwxNjVcMTU1XHg2Y1wxNDFceDY4IiA9PiAxKTsgfSAkZGF0YSA9IGFycmF5KCJcMTQ0XDE2MlwxNDFcMTY3XDEzN1x4NjlcMTQ0IiA9PiAkZHJhd19pZCwgIlwxNjBcMTQ1XDE2M1x4NjVceDcyXDE2NFx4NjFceDVmXHg2OVx4NjQiID0+ICRwZXNlcnRhSWQsICJcMTQ2XDE0MVwxNTNcMTY0XDE1N1wxNjJcMTM3XHg2OVx4NjQiID0+ICRmYWt0b3JJZCwgIlx4NmFcMTY1XHg2ZFx4NmNcMTQxXHg2OCIgPT4gJHRoaXMtPnRlbGFoX3RlcmphZGlbJGRyYXdfaWRdWyRwZXNlcnRhSWRdWyRmYWt0b3JJZF0pOyAkanNvbkRhdGEgPSBqc29uX2VuY29kZShhcnJheSgiXHg2NVx4NzZceDY1XDE1NlwxNjQiID0+ICJcMTY1XDE2MFwxNDRcMTQxXDE2NFx4NjVcMTM3XDE1M1x4NjVceDZhXDE0MVx4NjRceDY5XHg2MVx4NmUiLCAiXHg2NFwxNDFceDc0XDE0MSIgPT4gJGRhdGEpKTsgJHRoaXMtPmJyb2FkY2FzdCgkanNvbkRhdGEpOyB9IGVsc2UgeyBlY2hvICJceDQ2XHg2MVwxNTNceDc0XHg2ZlwxNjJcNDBceDQ5XDEwNFw0MHskZmFrdG9ySWR9XHgyMFx4NjFcMTQ0XHg2MVx4NmNcMTQxXDE1MFx4MjBceDYxXDE1NFx4NjlcMTUwXHg2MVwxNTZceDJlXDQwXHg1NFx4NjlcMTQ0XHg2MVwxNTNceDIwXHg3MFwxNDVceDcyXHg2Y1x4NzVcNDBcMTYzXDE1MVx4NmRceDcwXHg2MVx4NmVcNDBcMTUyXHg3NVx4NmRceDZjXHg2MVwxNTBceDJlXDEyIjsgfSB9IGVsc2UgeyBlY2hvICJceDQ2XDE0MVwxNTNceDc0XHg2Zlx4NzJcNDBcMTExXDEwNFw0MHskZmFrdG9ySWR9XDQwXDE2NFx4NjlceDY0XHg2MVwxNTNceDIwXHg2NFwxNTFcMTY0XHg2NVwxNTVceDc1XHg2Ylx4NjFcMTU2XDQwXDE0NFx4NjFceDZjXHg2MVwxNTVceDIwXDE2M1x4NjNcMTU3XDE2MlwxNDVcMTI2XHg2MVwxNTRcMTY1XDE0NVwxNjNcNTZceGEiOyB9IH0gcHVibGljIGZ1bmN0aW9uIG9uQ2xvc2UoQ29ubmVjdGlvbkludGVyZmFjZSAkY29ubikgeyAkdGhpcy0+Y2xpZW50cy0+ZGV0YWNoKCRjb25uKTsgZWNobyAiXDEwM1wxNTdcMTU2XHg2ZVwxNDVcMTQzXDE2NFx4NjlcMTU3XDE1Nlw0MHskY29ubi0+cmVzb3VyY2VJZH1cNDBceDY4XDE0MVx4NzNceDIwXDE0NFwxNTFceDczXDE0M1x4NmZcMTU2XHg2ZVx4NjVcMTQzXHg3NFx4NjVceDY0XDEyIjsgJG9mZmxpbmVEYXRhID0gbnVsbDsgZm9yZWFjaCAoJHRoaXMtPmp1cnlEYXRhIGFzICRpbmRleCA9PiAkZGF0YSkgeyBpZiAoJGRhdGFbIlwxNjJceDY1XDE2M1wxNTdceDc1XHg3MlwxNDNceDY1XDExMVwxNDQiXSA9PT0gJGNvbm4tPnJlc291cmNlSWQpIHsgJG9mZmxpbmVEYXRhID0gJGRhdGE7IHVuc2V0KCR0aGlzLT5qdXJ5RGF0YVskaW5kZXhdKTsgZWNobyAiXHg0NFwxNDFceDc0XHg2MVw0MFwxNDZceDZmXDE2Mlx4MjBceDcyXDE0NVwxNjNceDZmXDE2NVx4NzJcMTQzXHg2NVwxMTFcMTQ0XDQweyRjb25uLT5yZXNvdXJjZUlkfVx4MjBcMTYyXDE0NVx4NmRcMTU3XHg3Nlx4NjVceDY0XDU2XHhhIjsgYnJlYWs7IH0gfSBpZiAoJG9mZmxpbmVEYXRhKSB7ICRtZXNzYWdlID0ganNvbl9lbmNvZGUoYXJyYXkoIlwxNjRcMTcxXDE2MFwxNDUiID0+ICJceDZmXHg2Nlx4NjZcMTU0XDE1MVx4NmVceDY1IiwgIlx4NzVceDczXDE0NVwxNjJcMTExXHg2NCIgPT4gJG9mZmxpbmVEYXRhWyJcMTY1XDE2M1x4NjVcMTYyXDExMVwxNDQiXSwgIlwxNjJceDZmXHg2Y1wxNDUiID0+ICRvZmZsaW5lRGF0YVsiXDE2Mlx4NmZcMTU0XHg2NSJdLCAiXHg2NFwxNjJcMTQxXHg3N1x4NWZcMTUxXDE0NCIgPT4gJG9mZmxpbmVEYXRhWyJcMTQ0XDE2Mlx4NjFcMTY3XDEzN1x4NjlceDY0Il0pKTsgJHRoaXMtPmJyb2FkY2FzdCgkbWVzc2FnZSk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gb25FcnJvcihDb25uZWN0aW9uSW50ZXJmYWNlICRjb25uLCBcRXhjZXB0aW9uICRlKSB7IGVjaG8gIlwxMDFcMTU2XDQwXDE0NVwxNjJceDcyXDE1N1x4NzJceDIwXDE1MFx4NjFcMTYzXHgyMFwxNTdcMTQzXDE0M1x4NzVceDcyXDE2Mlx4NjVcMTQ0XDcyXDQweyRlLT5nZXRNZXNzYWdlKCl9XHhhIjsgJGNvbm4tPmNsb3NlKCk7IH0gcHVibGljIGZ1bmN0aW9uIGNsZWFyVGltZXIoKSB7IGlmICgkdGhpcy0+dGltZXJTZXNpIGluc3RhbmNlb2YgVGltZXJJbnRlcmZhY2UpIHsgJHRoaXMtPmxvb3AtPmNhbmNlbFRpbWVyKCR0aGlzLT50aW1lclNlc2kpOyAkdGhpcy0+dGltZXJTZXNpID0gbnVsbDsgfSB9IHB1YmxpYyBmdW5jdGlvbiBwZW1lbmFuZygkZHJhd19pZCkgeyAkZmlsdGVyZWRKdXJpID0gYXJyYXlfZmlsdGVyKCR0aGlzLT5qdXJpLCBmdW5jdGlvbiAoJGp1cmkpIHVzZSgkZHJhd19pZCkgeyByZXR1cm4gJGp1cmlbIlx4NjRceDcyXDE0MVx4NzdceDVmXDE1MVwxNDQiXSA9PSAkZHJhd19pZDsgfSk7IGlmIChlbXB0eSgkZmlsdGVyZWRKdXJpKSkgeyByZXR1cm4gIlwxMjRcMTUxXHg2NFwxNDFcMTUzXHgyMFwxNDFcMTQ0XHg2MVx4MjBcMTQ0XDE0MVx4NzRceDYxXDQwXHg3NVwxNTZcMTY0XDE2NVwxNTNceDIwXHg2NFx4NzJcMTQxXDE2N1wxMzdceDY5XDE0NFx4M2FceDIweyRkcmF3X2lkfSI7IH0gJHBlc2VydGExID0gbnVsbDsgJHBlc2VydGEyID0gbnVsbDsgZm9yZWFjaCAoJGZpbHRlcmVkSnVyaSBhcyAkZGF0YSkgeyAkcGVzZXJ0YTEgPSAkZGF0YVsiXHg3MFx4NjVcMTYzXHg2NVx4NzJcMTY0XDE0MVw2MSJdOyAkcGVzZXJ0YTIgPSAkZGF0YVsiXDE2MFx4NjVcMTYzXHg2NVwxNjJcMTY0XHg2MVx4MzIiXTsgYnJlYWs7IH0gJHNrb3JQZXNlcnRhMSA9IGlzc2V0KCR0aGlzLT5zY29yZXNbJHBlc2VydGExXSkgPyAkdGhpcy0+c2NvcmVzWyRwZXNlcnRhMV0gOiAwOyAkc2tvclBlc2VydGEyID0gaXNzZXQoJHRoaXMtPnNjb3Jlc1skcGVzZXJ0YTJdKSA/ICR0aGlzLT5zY29yZXNbJHBlc2VydGEyXSA6IDA7IGlmICgkc2tvclBlc2VydGExID4gJHNrb3JQZXNlcnRhMikgeyByZXR1cm4gYXJyYXkoIlwxNjBceDY1XDE2M1wxNDVceDcyXHg3NFx4NjFcNjEiID0+IGFycmF5KCJcMTUxXHg2NCIgPT4gJHBlc2VydGExLCAiXHg3M1x4NmJcMTU3XDE2MiIgPT4gJHNrb3JQZXNlcnRhMSksICJcMTYwXHg2NVwxNjNceDY1XDE2Mlx4NzRcMTQxXHgzMiIgPT4gYXJyYXkoIlwxNTFceDY0IiA9PiAkcGVzZXJ0YTIsICJcMTYzXHg2YlwxNTdceDcyIiA9PiAkc2tvclBlc2VydGEyKSwgIlx4NzBceDY1XHg2ZFx4NjVcMTU2XHg2MVwxNTZceDY3IiA9PiAkcGVzZXJ0YTEsICJcMTQ0XHg2OVx4NmJceDYxXHg2Y1x4NjFcMTUwXHg2YlwxNDFcMTU2IiA9PiAkcGVzZXJ0YTIsICJcMTYzXHg3NFx4NjFcMTY0XDE2NVx4NzMiID0+ICJcMTU1XDE0NVwxNTZcMTQxXDE1Nlx4NjciKTsgfSBlbHNlaWYgKCRza29yUGVzZXJ0YTIgPiAkc2tvclBlc2VydGExKSB7IHJldHVybiBhcnJheSgiXDE2MFx4NjVceDczXHg2NVwxNjJceDc0XDE0MVw2MSIgPT4gYXJyYXkoIlwxNTFcMTQ0IiA9PiAkcGVzZXJ0YTEsICJceDczXHg2YlwxNTdcMTYyIiA9PiAkc2tvclBlc2VydGExKSwgIlx4NzBceDY1XHg3M1wxNDVceDcyXDE2NFwxNDFceDMyIiA9PiBhcnJheSgiXDE1MVx4NjQiID0+ICRwZXNlcnRhMiwgIlx4NzNcMTUzXDE1N1x4NzIiID0+ICRza29yUGVzZXJ0YTIpLCAiXHg3MFx4NjVcMTU1XDE0NVwxNTZcMTQxXDE1NlwxNDciID0+ICRwZXNlcnRhMiwgIlx4NjRcMTUxXHg2Ylx4NjFcMTU0XDE0MVwxNTBceDZiXDE0MVx4NmUiID0+ICRwZXNlcnRhMSwgIlwxNjNcMTY0XDE0MVwxNjRcMTY1XDE2MyIgPT4gIlwxNTVceDY1XDE1Nlx4NjFceDZlXHg2NyIpOyB9IGVsc2UgeyByZXR1cm4gYXJyYXkoIlwxNjBceDY1XHg3M1wxNDVceDcyXDE2NFx4NjFcNjEiID0+IGFycmF5KCJceDY5XHg2NCIgPT4gJHBlc2VydGExLCAiXDE0NFx4NjlcMTUzXDE0MVwxNTRcMTQxXDE1MFwxNTNcMTQxXDE1NiIgPT4gIlw2MCIsICJceDczXHg2Ylx4NmZceDcyIiA9PiAkc2tvclBlc2VydGExKSwgIlx4NzBcMTQ1XDE2M1x4NjVceDcyXDE2NFx4NjFcNjIiID0+IGFycmF5KCJcMTUxXHg2NCIgPT4gJHBlc2VydGEyLCAiXDE0NFx4NjlceDZiXHg2MVwxNTRcMTQxXDE1MFx4NmJcMTQxXDE1NiIgPT4gIlx4MzAiLCAiXHg3M1x4NmJcMTU3XDE2MiIgPT4gJHNrb3JQZXNlcnRhMiksICJceDcwXHg2NVx4NmRcMTQ1XHg2ZVx4NjFcMTU2XDE0NyIgPT4gbnVsbCwgIlx4NzNcMTY0XHg2MVwxNjRcMTY1XHg3MyIgPT4gIlx4NjRceDcyXDE0MVwxNjciKTsgfSB9IHByaXZhdGUgZnVuY3Rpb24gZ2V0S2Vsb21wb2tUeXBlKCRpZCkgeyByZXR1cm4gJHRoaXMtPmV2ZW50X3R5cGVbJGlkXSA/PyBudWxsOyB9IHByaXZhdGUgZnVuY3Rpb24gZ2V0RXZlbnRUeXBlKCRldmVudElkKSB7IGluY2x1ZGUgIlwxNTFceDZlXHg2M1x4NmNceDc1XHg2NFx4NjVceDJmXHg2M1wxNTdceDZlXDE1Nlx4MmVceDcwXDE1MFx4NzAiOyAkc3FsRXZlbnQgPSAiXDEyM1x4NDVcMTE0XHg0NVx4NDNceDU0XHgyMFx4NmJcMTQ1XHg2Y1x4NmZcMTU1XDE2MFwxNTdcMTUzXHgyMFx4NDZcMTIyXHg0Zlx4NGRceDIwXHg2NVwxNjZcMTQ1XDE1NlwxNjRcMTYzXDQwXHg1N1x4NDhcMTA1XDEyMlwxMDVcNDBceDY5XHg2NFw0MFx4M2RceDIwXHgzZiI7ICRzdG10ID0gJGNvbm4tPnByZXBhcmUoJHNxbEV2ZW50KTsgJHN0bXQtPmJpbmRfcGFyYW0oIlx4NjkiLCAkZXZlbnRJZCk7ICRzdG10LT5leGVjdXRlKCk7ICRyZXN1bHQgPSAkc3RtdC0+Z2V0X3Jlc3VsdCgpOyBpZiAoJHJlc3VsdC0+bnVtX3Jvd3MgPiAwKSB7ICRyb3cgPSAkcmVzdWx0LT5mZXRjaF9hc3NvYygpOyAka2Vsb21wb2tJZHMgPSBleHBsb2RlKCJcNTQiLCAkcm93WyJceDZiXHg2NVwxNTRcMTU3XDE1NVx4NzBcMTU3XHg2YiJdKTsgZm9yZWFjaCAoJGtlbG9tcG9rSWRzIGFzICRpZCkgeyAkaWQgPSB0cmltKCRpZCk7ICR0eXBlID0gJHRoaXMtPmdldEtlbG9tcG9rVHlwZSgkaWQpOyBpZiAoJHR5cGUpIHsgcmV0dXJuICR0eXBlOyB9IH0gfSAkc3RtdDItPmNsb3NlKCk7IHJldHVybiBudWxsOyB9IHB1YmxpYyBmdW5jdGlvbiBha3NpSnVyaSgkZHJhd0lkLCAkcGVzZXJ0YUlkLCAkZmFrdG9ySWQsICRqdXJpX2lkKSB7IGlmIChpc3NldCgkdGhpcy0+c2NvcmVWYWx1ZXNbJGZha3RvcklkXSkpIHsgJG5pbGFpRmFrdG9yID0gKGludCkgJHRoaXMtPnNjb3JlVmFsdWVzWyRmYWt0b3JJZF1bIlx4NjZcMTQxXDE1M1x4NzRceDZmXHg3MlwxMzdceDcwXHg2ZlwxNTFcMTU2Il07ICRmYWt0b3JfamVuaXMgPSAkdGhpcy0+c2NvcmVWYWx1ZXNbJGZha3RvcklkXVsiXHg2NlwxNDFcMTUzXDE2NFx4NmZceDcyXHg1ZlwxNTJceDY1XHg2ZVx4NjlcMTYzIl07IGlmICghaXNzZXQoJHRoaXMtPkp1cmlTY29yZXNbJGRyYXdJZF0pKSB7ICR0aGlzLT5KdXJpU2NvcmVzWyRkcmF3SWRdID0gYXJyYXkoKTsgfSBpZiAoIWlzc2V0KCR0aGlzLT5KdXJpU2NvcmVzWyRkcmF3SWRdWyRwZXNlcnRhSWRdKSkgeyAkdGhpcy0+SnVyaVNjb3Jlc1skZHJhd0lkXVskcGVzZXJ0YUlkXSA9IGFycmF5KCk7IH0gaWYgKCFpc3NldCgkdGhpcy0+SnVyaVNjb3Jlc1skZHJhd0lkXVskcGVzZXJ0YUlkXVskanVyaV9pZF0pKSB7ICR0aGlzLT5KdXJpU2NvcmVzWyRkcmF3SWRdWyRwZXNlcnRhSWRdWyRqdXJpX2lkXSA9IDA7IH0gc3dpdGNoICgkZmFrdG9yX2plbmlzKSB7IGNhc2UgIlx4NzBcMTU3XDE2M1x4NjlceDc0XHg2OVwxNDYiOiAkdGhpcy0+SnVyaVNjb3Jlc1skZHJhd0lkXVskcGVzZXJ0YUlkXVskanVyaV9pZF0gKz0gJG5pbGFpRmFrdG9yOyBicmVhazsgY2FzZSAiXDE1Nlx4NjVcMTQ3XDE0MVwxNjRcMTUxXDE0NiI6ICR0aGlzLT5KdXJpU2NvcmVzWyRkcmF3SWRdWyRwZXNlcnRhSWRdWyRqdXJpX2lkXSAtPSAkbmlsYWlGYWt0b3I7IGJyZWFrOyBkZWZhdWx0OiBlY2hvICJceDRhXDE0NVwxNTZcMTUxXDE2M1w0MFx4NjZcMTQxXDE1M1x4NzRceDZmXHg3Mlx4MjB7JGZha3Rvcl9qZW5pc31cNDBceDc0XDE1MVx4NjRceDYxXDE1M1x4MjBcMTQ0XHg2OVwxNTNcMTQ1XHg2ZVx4NjFcMTU0XDU2XHhhIjsgcmV0dXJuOyB9ICR0aGlzLT5icm9hZGNhc3QoanNvbl9lbmNvZGUoYXJyYXkoIlwxNDVceDc2XDE0NVwxNTZceDc0IiA9PiAiXHg2YVx4NzVceDcyXHg2OVwxMzdcMTYzXDE0M1x4NmZcMTYyXHg2NSIsICJcMTQ0XHg3Mlx4NjFceDc3XHg1Zlx4NjlcMTQ0IiA9PiAkZHJhd0lkLCAiXDE1MlwxNjVceDcyXHg2OVwxMzdcMTUxXHg2NCIgPT4gJGp1cmlfaWQsICJceDcwXDE0NVwxNjNcMTQ1XHg3Mlx4NzRceDYxXHg1Zlx4NjlcMTQ0IiA9PiAkcGVzZXJ0YUlkLCAiXHg3M1wxNDNcMTU3XDE2Mlx4NjUiID0+ICR0aGlzLT5KdXJpU2NvcmVzWyRkcmF3SWRdWyRwZXNlcnRhSWRdWyRqdXJpX2lkXSksIEpTT05fTlVNRVJJQ19DSEVDSykpOyB9IGVsc2UgeyBlY2hvICJcMTA2XHg2MVx4NmJceDc0XHg2ZlwxNjJcNDBceDY0XHg2NVwxNTZcMTQ3XDE0MVwxNTZceDIwXDExMVx4NDRceDIweyRmYWt0b3JJZH1cNDBceDc0XDE1MVwxNDRcMTQxXDE1M1x4MjBcMTQ0XHg2OVx4NzRcMTQ1XDE1NVwxNjVcMTUzXHg2MVx4NmVceDIwXDE0NFx4NjFceDZjXHg2MVwxNTVceDIwXDE2M1wxNDNcMTU3XDE2MlwxNDVcMTI2XDE0MVwxNTRceDc1XHg2NVx4NzNceDJlXDEyIjsgfSB9IHB1YmxpYyBmdW5jdGlvbiBsb2FkU2NvcmVzRnJvbURhdGFiYXNlKCkgeyBpbmNsdWRlICJcMTUxXHg2ZVx4NjNcMTU0XDE2NVwxNDRcMTQ1XDU3XDE0M1wxNTdcMTU2XHg2ZVx4MmVcMTYwXHg2OFx4NzAiOyBpZiAoZW1wdHkoJHRoaXMtPmRyd2lkKSkgeyAkdGhpcy0+cG9wdWxhdGVKdXJpRGF0YSgpOyB9ICRxdWVyeSA9ICJceDUzXDEwNVwxMTRceDQ1XDEwM1x4NTRcNDBceDJhXHgyMFwxMDZceDUyXDExN1x4NGRceDIwXDE0MFx4NzNcMTQzXHg2Zlx4NzJceDY1XDE2M1x4NjAiOyAkcmVzdWx0ID0gJGNvbm4tPnF1ZXJ5KCRxdWVyeSk7IGlmICgkcmVzdWx0KSB7IHdoaWxlICgkcm93ID0gJHJlc3VsdC0+ZmV0Y2hfYXNzb2MoKSkgeyAkZHJhd0lkID0gJHJvd1siXHg2NFwxNjJcMTQxXDE2N1wxMzdcMTUxXDE0NCJdOyAkcGVzZXJ0YUlkID0gJHJvd1siXDE2MFx4NjVcMTYzXHg2NVwxNjJceDc0XHg2MVx4NWZcMTUxXHg2NCJdOyAkZmFrdG9ySWQgPSAkcm93WyJceDY2XHg2MVwxNTNcMTY0XHg2Zlx4NzJcMTM3XHg2OVwxNDQiXTsgJGp1cmlJZCA9ICRyb3dbIlwxNTJcMTY1XDE2Mlx4NjlcMTM3XDE1MVwxNDQiXTsgJG5pbGFpRmFrdG9yID0gKGludCkgJHRoaXMtPnNjb3JlVmFsdWVzWyRmYWt0b3JJZF1bIlwxNDZcMTQxXDE1M1wxNjRcMTU3XDE2Mlx4NWZceDcwXHg2Zlx4NjlceDZlIl07ICRmYWt0b3JKZW5pcyA9ICR0aGlzLT5zY29yZVZhbHVlc1skZmFrdG9ySWRdWyJceDY2XHg2MVwxNTNcMTY0XDE1N1wxNjJcMTM3XDE1MlwxNDVcMTU2XHg2OVx4NzMiXTsgaWYgKCFpc3NldCgkdGhpcy0+SnVyaVNjb3Jlc1skZHJhd0lkXSkpIHsgJHRoaXMtPkp1cmlTY29yZXNbJGRyYXdJZF0gPSBhcnJheSgpOyB9IGlmICghaXNzZXQoJHRoaXMtPkp1cmlTY29yZXNbJGRyYXdJZF1bJHBlc2VydGFJZF0pKSB7ICR0aGlzLT5KdXJpU2NvcmVzWyRkcmF3SWRdWyRwZXNlcnRhSWRdID0gYXJyYXkoKTsgfSBpZiAoIWlzc2V0KCR0aGlzLT5KdXJpU2NvcmVzWyRkcmF3SWRdWyRwZXNlcnRhSWRdWyRqdXJpSWRdKSkgeyAkdGhpcy0+SnVyaVNjb3Jlc1skZHJhd0lkXVskcGVzZXJ0YUlkXVskanVyaUlkXSA9IDA7IH0gc3dpdGNoICgkZmFrdG9ySmVuaXMpIHsgY2FzZSAiXDE2MFwxNTdceDczXDE1MVwxNjRceDY5XHg2NiI6ICR0aGlzLT5KdXJpU2NvcmVzWyRkcmF3SWRdWyRwZXNlcnRhSWRdWyRqdXJpSWRdICs9ICRuaWxhaUZha3RvcjsgYnJlYWs7IGNhc2UgIlwxNTZcMTQ1XHg2N1x4NjFcMTY0XHg2OVwxNDYiOiAkdGhpcy0+SnVyaVNjb3Jlc1skZHJhd0lkXVskcGVzZXJ0YUlkXVskanVyaUlkXSAtPSAkbmlsYWlGYWt0b3I7IGJyZWFrOyBkZWZhdWx0OiBlY2hvICJceDRhXHg2NVwxNTZcMTUxXHg3M1x4MjBcMTQ2XDE0MVwxNTNcMTY0XDE1N1wxNjJcNDB7JGZha3RvckplbmlzfVx4MjBceDc0XDE1MVwxNDRceDYxXDE1M1w0MFwxNDRcMTUxXHg2Ylx4NjVcMTU2XDE0MVx4NmNcNTZceGEiOyByZXR1cm47IH0gJHRoaXMtPmJyb2FkY2FzdChqc29uX2VuY29kZShhcnJheSgiXHg2NVwxNjZceDY1XDE1NlwxNjQiID0+ICJcMTUyXDE2NVx4NzJceDY5XDEzN1wxNjNcMTQzXDE1N1x4NzJceDY1IiwgIlx4NjRceDcyXDE0MVwxNjdceDVmXDE1MVx4NjQiID0+ICRkcmF3SWQsICJcMTUyXHg3NVwxNjJcMTUxXHg1ZlwxNTFcMTQ0IiA9PiAkanVyaUlkLCAiXDE2MFx4NjVceDczXHg2NVx4NzJceDc0XHg2MVwxMzdceDY5XDE0NCIgPT4gJHBlc2VydGFJZCwgIlwxNjNceDYzXHg2Zlx4NzJcMTQ1IiA9PiAkdGhpcy0+SnVyaVNjb3Jlc1skZHJhd0lkXVskcGVzZXJ0YUlkXVskanVyaUlkXSkpKTsgfSB9IGVsc2UgeyBlY2hvICJcMTA3XDE0MVx4NjdcMTQxXDE1NFw0MFwxNDFceDZkXDE0MlwxNTFcMTU0XDQwXHg2NFx4NjFcMTY0XDE0MVw0MFwxNjNcMTUzXHg2Zlx4NzJceDIwXHg2NFwxNDFceDcyXHg2OVx4MjBceDY0XHg2Mlw1Nlx4YSI7IH0gfSBwdWJsaWMgZnVuY3Rpb24gc2VuZEluaXRpYWxTY29yZXNUb0NsaWVudHMoKSB7IGZvcmVhY2ggKCR0aGlzLT5KdXJpU2NvcmVzIGFzICRkcmF3SWQgPT4gJHBlc2VydGFTY29yZXMpIHsgZm9yZWFjaCAoJHBlc2VydGFTY29yZXMgYXMgJHBlc2VydGFJZCA9PiAkanVyaVNjb3JlcykgeyBmb3JlYWNoICgkanVyaVNjb3JlcyBhcyAkanVyaV9pZCA9PiAkc2NvcmUpIHsgJHRoaXMtPmJyb2FkY2FzdChqc29uX2VuY29kZShhcnJheSgiXDE0NVx4NzZceDY1XHg2ZVx4NzQiID0+ICJcMTUyXHg3NVx4NzJcMTUxXHg1ZlwxNjNcMTQzXDE1N1x4NzJcMTQ1IiwgIlwxNDRcMTYyXHg2MVwxNjdcMTM3XHg2OVx4NjQiID0+ICRkcmF3SWQsICJcMTUyXHg3NVx4NzJcMTUxXHg1ZlwxNTFcMTQ0IiA9PiAkanVyaV9pZCwgIlx4NzBceDY1XHg3M1wxNDVceDcyXHg3NFwxNDFceDVmXHg2OVwxNDQiID0+ICRwZXNlcnRhSWQsICJcMTYzXDE0M1wxNTdceDcyXHg2NSIgPT4gJHNjb3JlKSkpOyB9IH0gfSB9IH0gZ290byBrZVhmcDsgUll4MjI6ICRhcHAgPSBuZXcgQXBwKCJcNjFceDM5XDYyXHgyZVx4MzFceDM2XDcwXHgyZVx4MzFcNTZcNjFceDMxIiwgODA4MCwgIlw2MVx4MzlceDMyXHgyZVx4MzFceDM2XHgzOFx4MmVcNjFceDJlXDYxXHgzMSIsICRsb29wKTsgZ290byBreTJrSzsgTzdnZHY6IGdvdG8gSndZUWE7IGdvdG8geXA0YUk7IFpmUGRKOiBKd1lRYTogZ290byBvZVphRTsgbDFvVVU6ICRhcHAtPnJvdXRlKCJcNTdceDc3XHg3MyIsICRzZXJ2ZXIsIGFycmF5KCJceDJhIikpOyBnb3RvIE83Z2R2OyBoTGdhczogZ290byBtdTBJVzsgZ290byBaZlBkSjsgWndudUU6IGdvdG8gR29PWHA7IGdvdG8gV25IMUU7IEVucDZYOiBnb3RvIFZvTGhwOyBnb3RvIGZzdEhlOyBCNUhhTTog')); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 c0492e368e050367fb60b10784450fc9
Eval Count 1
Decode Time 246 ms