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("PD9waHANCnNlc3Npb25fc3RhcnQoKTsNCnJlcXVpcmVfb25jZSgiY29udH..
Decoded Output download
?>b'<?php
session_start();
require_once("controles/usuarios.php");
require_once("controles/links.php");
require_once("controles/categorias.php");
require_once("controles/listas.php");
if (checarUsuario()) {
require_once("cabecalho.php");
$links = listarlinks();
$categorias = listarCategorias();
$categoriasNVazias = listarCategoriasNaoVazias();
$listas = listarListas();
?>
<style id="checkme">
.page-2content {
padding-left: 240px !important;
padding-right: 240px !important;
}
</style>
<div id="conteudo-painel" style="padding-left: 0px;" class="table-responsive container">
<div class="mb-5 form-group float-left">
<input type="text" class="pesquisar form-control" placeholder="Pesquisar...">
</div>
<?php if($_SESSION[\'admin\']) { ?>
<div class="h3 mt-5 row align-items-center justify-content-end">
<button onclick="$(\'#cadastroGlobal\').modal()" class="btn btn-success text-white fas fa-plus"> Adicionar</button>
<?php } ?>
</div>
<div class="table-responsive">
<table class=\'table table-striped table-hover\'>
<caption>Listas</caption>
<thead class="thead-dark">
<tr align="center">
<th class=\'nomecol\' style="width: 5%" scope="col" ><font color="white"><i class="fa fa-connectdevelop"> Id</th>
<th class=\'nomecol\' scope="col" ><font color="white"><i class="fa fa-address-card"> Nome</th>
<?php if($_SESSION[\'admin\']){ ?>
<th class=\'nomecol\' style="width: 5%" scope="col">Del</th>
<th class=\'nomecol\' style="width: 5%" scope="col">Edit</th>
<?php } ?>
<th class=\'nomecol\' style="width: 5%" scope="col">Obter</th>
<th class=\'semresultado\' scope=\'col\'>Nenhum resultado</th>
</tr>
</thead>
<?php
if ($listas){
foreach($listas as $lista) {
$dados[] = array(
\'id\' => $lista[\'id_lista\'],
\'nome\' => $lista[\'nome_lista\']
);
}
if (count($dados)) {
echo \'<tbody id="conteudo">\';
foreach ($dados as $dadosArray) {
echo \'<tr class="post" align="center">\';
echo \'<td style="text-align: center; vertical-align: middle;">\'.$dadosArray[\'id\'].\'</td>\';
echo \'<td style="text-align: center; vertical-align: middle;">\'.$dadosArray[\'nome\'].\'</td>\';
if($_SESSION[\'admin\']){
?>
<td><button class="btn btn-danger" onclick="removerConfirma(\'<?=$dadosArray[\'id\']?>\',\'<?=$dadosArray[\'nome\']?>\')"><i class="far fa-trash-alt"></i></button></td>
<td><button class=\'btn btn-primary\' onclick="editarGlobalConfirma(\'<?=$dadosArray[\'id\']?>\',\'<?=$dadosArray[\'nome\']?>\', [<?php foreach (categoriasLista($dadosArray[\'id\']) as $categoria) echo $categoria[\'id\'] .\',\' ?> ] )"><i class="fas fa-edit"></i></button></td>
<?php }
echo \'<td><button class="btn btn-success" onclick="obterListaUsuarios(\'."\'".$dadosArray[\'id\']."\'".\')"><i class="fas fa-link"></i></button></td>\';
echo \'</tr>\';
}
echo \'</tbody>\';
}
}
?>
</table>
</div>
<?php if($_SESSION[\'admin\']) { ?>
</div>
</div>
<?php } ?>
</div>
</main>
<!-- page-content" -->
</div>
<!-- Cadastro Global Inicio -->
<div class="modal fade bd-modal-lg" id="cadastroGlobal" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Adicionar Lista</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form id="cadastro-form-global">
<div class="container">
<div class="form-group">
<label>Nome:</label>
<input type="text" class="form-control" name="nome" placeholder="Nome da Lista" required autofocus>
<small class="form-text text-muted">Campo nico!</small>
</div>
<div class="form-group">
<label>Categoras:</label>
<div class="mb-3 ml-0 row">
<select name="categoria[]" class="selectpicker" title="Categoria..." required multiple>
<?php if ($categorias) {
foreach($categorias as $categoria) {?>
<option value="<?= $categoria[\'id\']?>"><?= $categoria[\'nome\']?></option>
<?php }
} ?>
</select>
</div>
</div>
<button type="submit" class="btn btn-danger">Adicionar</button>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- Cadastro Global Fim-->
<!-- Editar Global Inicio -->
<div class="modal fade bd-modal-lg" id="editarGlobal" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Editar Lista</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form id="editar-form-global">
<input type="hidden" id="idGE" name="id">
<div class="container">
<div class="form-group">
<label>Nome:</label>
<input type="text" class="form-control" name="nome" id="nomeGE" placeholder="Nome da Lista" required autofocus>
<small class="form-text text-muted">Campo nico!</small>
</div>
<div class="form-group">
<label>Categoras:</label>
<div class="mb-3 ml-0 row">
<select id="categoriaGE" name="categoria[]" class="selectpicker" title="Categoria..." required multiple>
<?php if ($categorias) {
foreach($categorias as $categoria) {?>
<option value="<?= $categoria[\'id\']?>"><?= $categoria[\'nome\']?></option>
<?php }
} ?>
</select>
</div>
</div>
<button type="submit" class="btn btn-danger"><i class="fas fa-save"></i> Salvar</button>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- Editar Global Fim-->
<!-- Remove Inicio -->
<div class="modal fade" id="remover" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Tem certeza?</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
<span aria-hidden="true">×</span>
</button>
</div>
<div id="remover-conteudo" class="modal-body"></div>
</div>
</div>
</div>
<!-- Remove Fim-->
<!-- Obter Link Inicio -->
<div class="modal fade" id="obterLinkdaLista" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true">
<div class="modal-dialog modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Obter Link</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form id="formObterLinkdaLista">
<input type="hidden" id="idLista" name="idLista">
<div class="form-group">
<label>Selecione o Usurio:</label>
<div class="select-users ml-0 row">
</div>
</div>
<button type="submit" class="btn btn-secondary">Obter</button>
</form>
</div>
</div>
</div>
</div>
<!-- Obter Link Fim-->
<!-- Link Inicio -->
<div class="modal fade" id="linkLista" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true">
<div class="modal-dialog modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"> Link</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div>
<input type="text" class="form-control" id="linkIn" readonly><br>
<h5 class="form-control" name="novolink" id="novolink" readonly></h5>
<button type="button" class="btn btn-danger" onclick="copiarurl()">Copiar</button>
<button type="button" class="btn btn-danger" onclick="encurtar()">Encurtar</button>
<button type="button" class="btn btn-danger" onclick="copiarencutador()">Copiar Encurtar</button>
<button type="button" class="btn btn-primary" onclick="javascript: window.open(document.getElementById(\'linkIn\').value);">Baixar Lista</button>
</div>
</div>
</div>
</div>
</div>
<!-- Link Fim-->
</body>
<script>
$("#obterLinkdaLista").on(\'hidden.bs.modal\', function (e) {
$(".select-users").empty();
});
function obterListaUsuarios(id) {
$(\'#idLista\').val(id);
$.ajax({
type: "POST",
url: "controles/obter-lista-usuarios.php",
data: {id: id},
dataType:"json",
success: function(data) {
var $select = $(\'<select/>\', {
\'class\':"selectpicker",
\'title\':"Usurio...",
\'name\': "idUsuario"
});
for (j=0; j < data.length; j++) {
$select.append(\'<option value=\' + data[j].id_usuario + \'>\' + data[j].nome_usuario + \'</option>\');
}
$select.appendTo(\'.select-users\').selectpicker(\'refresh\');
}
});
$(\'#obterLinkdaLista\').modal();
}
function listaGlobal() {
$(\'#cadastro\').modal(\'hide\');
$(\'#cadastroGlobal\').modal();
}
function removerConfirma(id,nome) {
$(\'#remover-conteudo\').html(\'<div class="alert alert-danger" role="alert"><strong> Remover </strong>\' + nome + \'?</div><button onclick="remover(\' + id + \')" type="submit" class="btn btn-danger float-right">Remover</button>\');
$(\'#remover\').modal();
}
function editarGlobalConfirma(id,nome, lista) {
$(\'#idGE\').val(id);
$(\'#nomeGE\').val(nome);
$(\'#nomeGE\').val(nome);
$(\'#categoriaGE\').val(lista);
$(\'#categoriaGE\').selectpicker(\'render\');
$(\'#editarGlobal\').modal();
}
function remover(id) {
$.ajax({
type: "POST",
url: "controles/remover-lista.php",
data: {id: id},
success: function(data) {
location.reload();
}
});
}
$( "#cadastro-form-global" ).submit(function( event ) {
$.ajax({
type: "POST",
url: "controles/adicionar-lista-global.php",
data: $("#cadastro-form-global").serialize(),
success: function(data) {
location.reload();
},
error: function(data) {
resultado(data.responseText);
}
});
event.preventDefault();
});
$( "#editar-form-global" ).submit(function( event ) {
$.ajax({
type: "POST",
url: "controles/editar-lista-global.php",
data: $("#editar-form-global").serialize(),
success: function(data) {
location.reload();
},
error: function(data) {
resultado(data.responseText);
}
});
event.preventDefault();
});
$( "#formObterLinkdaLista" ).submit(function( event ) {
$.ajax({
type: "POST",
url: "controles/obter-link-lista.php",
data: $("#formObterLinkdaLista").serialize(),
success: function(data) {
$(\'#linkIn\').val(data);
$(\'#obterLinkdaLista\').modal(\'hide\');
$(\'#linkLista\').modal();
}
});
event.preventDefault();
});
function copiarurl() {
$(\'#linkIn\').select();
document.execCommand("copy");
}
function copiarencutador() {
$(\'#novolink\').select();
document.execCommand("copy");
}
function encurtar() {
var valor = document.getElementById("linkIn").value;
$.getJSON( "https://is.gd/create.php?callback=?", {
url: valor,
format: "json"
}).done(function( data ) {
let novolink = data.shorturl;
console.log(novolink);
if(novolink!==undefined)
document.getElementById("novolink").innerHTML = novolink;
else document.getElementById("novolink").innerHTML = "Erro Link";
});
}
</script>
<?php require_once("comum.php");
require_once("alerta.php"); ?>
</html>
<?php
} else {
header("Location: index.php");
die();
}
?>'
Did this file decode correctly?
Original Code
<?php @eval("?>".base64_decode("PD9waHANCnNlc3Npb25fc3RhcnQoKTsNCnJlcXVpcmVfb25jZSgiY29udHJvbGVzL3VzdWFyaW9zLnBocCIpOw0KcmVxdWlyZV9vbmNlKCJjb250cm9sZXMvbGlua3MucGhwIik7DQpyZXF1aXJlX29uY2UoImNvbnRyb2xlcy9jYXRlZ29yaWFzLnBocCIpOw0KcmVxdWlyZV9vbmNlKCJjb250cm9sZXMvbGlzdGFzLnBocCIpOw0KaWYgKGNoZWNhclVzdWFyaW8oKSkgew0KcmVxdWlyZV9vbmNlKCJjYWJlY2FsaG8ucGhwIik7DQokbGlua3MgPSBsaXN0YXJsaW5rcygpOw0KJGNhdGVnb3JpYXMgPSBsaXN0YXJDYXRlZ29yaWFzKCk7DQokY2F0ZWdvcmlhc05WYXppYXMgPSBsaXN0YXJDYXRlZ29yaWFzTmFvVmF6aWFzKCk7DQokbGlzdGFzID0gbGlzdGFyTGlzdGFzKCk7DQo/Pg0KCTxzdHlsZSBpZD0iY2hlY2ttZSI+DQoJLnBhZ2UtMmNvbnRlbnQgew0KCSAgICBwYWRkaW5nLWxlZnQ6IDI0MHB4ICFpbXBvcnRhbnQ7DQoJCXBhZGRpbmctcmlnaHQ6IDI0MHB4ICFpbXBvcnRhbnQ7DQoJfQ0KCTwvc3R5bGU+DQoJICAgIDxkaXYgaWQ9ImNvbnRldWRvLXBhaW5lbCIgc3R5bGU9InBhZGRpbmctbGVmdDogMHB4OyIgY2xhc3M9InRhYmxlLXJlc3BvbnNpdmUgY29udGFpbmVyIj4NCiAgICAgICAgDQoNCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi01IGZvcm0tZ3JvdXAgZmxvYXQtbGVmdCI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0icGVzcXVpc2FyIGZvcm0tY29udHJvbCIgcGxhY2Vob2xkZXI9IlBlc3F1aXNhci4uLiI+DQogICAgICAgICAgICAgICAgPC9kaXY+DQoJCQkJDQoJCQkJPD9waHAgaWYoJF9TRVNTSU9OWydhZG1pbiddKSB7ID8+DQoJCQkJPGRpdiBjbGFzcz0iaDMgbXQtNSByb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQiPg0KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iJCgnI2NhZGFzdHJvR2xvYmFsJykubW9kYWwoKSIgY2xhc3M9ImJ0biBidG4tc3VjY2VzcyB0ZXh0LXdoaXRlIGZhcyBmYS1wbHVzIj4gQWRpY2lvbmFyPC9idXR0b24+DQoJCQkJIDw/cGhwIH0gPz4NCiAgICAgICAgICAgIDwvZGl2Pg0KCQkJDQoJCQk8ZGl2IGNsYXNzPSJ0YWJsZS1yZXNwb25zaXZlIj4NCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9J3RhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtaG92ZXInPg0KICAgICAgICAgICAgICAgICAgICA8Y2FwdGlvbj5MaXN0YXM8L2NhcHRpb24+DQogICAgICAgICAgICAgICAgICAgIDx0aGVhZCBjbGFzcz0idGhlYWQtZGFyayI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgYWxpZ249ImNlbnRlciI+DQoJCQkJCQkJPHRoIGNsYXNzPSdub21lY29sJyBzdHlsZT0id2lkdGg6IDUlIiBzY29wZT0iY29sIiA+PGZvbnQgIGNvbG9yPSJ3aGl0ZSI+PGkgY2xhc3M9ImZhIGZhLWNvbm5lY3RkZXZlbG9wIj4gSWQ8L3RoPg0KCQkJCQkJCTx0aCBjbGFzcz0nbm9tZWNvbCcgc2NvcGU9ImNvbCIgPjxmb250ICBjb2xvcj0id2hpdGUiPjxpIGNsYXNzPSJmYSBmYS1hZGRyZXNzLWNhcmQiPiBOb21lPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZigkX1NFU1NJT05bJ2FkbWluJ10peyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0nbm9tZWNvbCcgc3R5bGU9IndpZHRoOiA1JSIgc2NvcGU9ImNvbCI+RGVsPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9J25vbWVjb2wnIHN0eWxlPSJ3aWR0aDogNSUiIHNjb3BlPSJjb2wiPkVkaXQ8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9J25vbWVjb2wnIHN0eWxlPSJ3aWR0aDogNSUiIHNjb3BlPSJjb2wiPk9idGVyPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9J3NlbXJlc3VsdGFkbycgc2NvcGU9J2NvbCc+TmVuaHVtIHJlc3VsdGFkbzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgPD9waHAgDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxpc3Rhcyl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkbGlzdGFzIGFzICRsaXN0YSkgeyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRhZG9zW10gPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgICA9PiAkbGlzdGFbJ2lkX2xpc3RhJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9tZScgPT4gJGxpc3RhWydub21lX2xpc3RhJ10NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KCRkYWRvcykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHRib2R5IGlkPSJjb250ZXVkbyI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZGFkb3MgYXMgJGRhZG9zQXJyYXkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHRyIGNsYXNzPSJwb3N0IiBhbGlnbj0iY2VudGVyIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ij4nLiRkYWRvc0FycmF5WydpZCddLic8L3RkPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsiPicuJGRhZG9zQXJyYXlbJ25vbWUnXS4nPC90ZD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkX1NFU1NJT05bJ2FkbWluJ10peyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxidXR0b24gY2xhc3M9ImJ0biBidG4tZGFuZ2VyIiBvbmNsaWNrPSJyZW1vdmVyQ29uZmlybWEoJzw/PSRkYWRvc0FycmF5WydpZCddPz4nLCc8Pz0kZGFkb3NBcnJheVsnbm9tZSddPz4nKSI+PGkgY2xhc3M9ImZhciBmYS10cmFzaC1hbHQiPjwvaT48L2J1dHRvbj48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YnV0dG9uIGNsYXNzPSdidG4gYnRuLXByaW1hcnknIG9uY2xpY2s9ImVkaXRhckdsb2JhbENvbmZpcm1hKCc8Pz0kZGFkb3NBcnJheVsnaWQnXT8+JywnPD89JGRhZG9zQXJyYXlbJ25vbWUnXT8+JywgWzw/cGhwIGZvcmVhY2ggKGNhdGVnb3JpYXNMaXN0YSgkZGFkb3NBcnJheVsnaWQnXSkgYXMgJGNhdGVnb3JpYSkgZWNobyAkY2F0ZWdvcmlhWydpZCddIC4nLCcgPz4gXSApIj48aSBjbGFzcz0iZmFzIGZhLWVkaXQiPjwvaT48L2J1dHRvbj48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfSANCgkJCQkJCQkJCQkJCQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHRkPjxidXR0b24gY2xhc3M9ImJ0biBidG4tc3VjY2VzcyIgb25jbGljaz0ib2J0ZXJMaXN0YVVzdWFyaW9zKCcuIiciLiRkYWRvc0FycmF5WydpZCddLiInIi4nKSI+PGkgY2xhc3M9ImZhcyBmYS1saW5rIj48L2k+PC9idXR0b24+PC90ZD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L3RyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCQkJCQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC90Ym9keT4nOw0KCQkJCQkJCSAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICA8L2Rpdj4NCiAgICAgICAgPD9waHAgaWYoJF9TRVNTSU9OWydhZG1pbiddKSB7ID8+DQogICAgICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgICAgIDw/cGhwIH0gPz4NCiAgICA8L2Rpdj4NCg0KICA8L21haW4+DQogIDwhLS0gcGFnZS1jb250ZW50IiAtLT4NCjwvZGl2Pg0KDQo8IS0tIENhZGFzdHJvIEdsb2JhbCBJbmljaW8gLS0+DQo8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIGJkLW1vZGFsLWxnIiBpZD0iY2FkYXN0cm9HbG9iYWwiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9IkNhZGFzdHJhciIgYXJpYS1oaWRkZW49InRydWUiPg0KICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtbGciIHJvbGU9ImRvY3VtZW50Ij4NCiAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4NCiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+DQogICAgICAgIDxoNSBjbGFzcz0ibW9kYWwtdGl0bGUiPkFkaWNpb25hciBMaXN0YTwvaDU+DQogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkZlY2hhciI+DQogICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+DQogICAgICAgIDwvYnV0dG9uPg0KICAgICAgPC9kaXY+DQogICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4NCiAgICAgICAgPGZvcm0gaWQ9ImNhZGFzdHJvLWZvcm0tZ2xvYmFsIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Ob21lOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJub21lIiBwbGFjZWhvbGRlcj0iTm9tZSBkYSBMaXN0YSIgcmVxdWlyZWQgYXV0b2ZvY3VzPg0KICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImZvcm0tdGV4dCB0ZXh0LW11dGVkIj5DYW1wbyDDum5pY28hPC9zbWFsbD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4gIA0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPiANCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkNhdGVnb3LDrWFzOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMgbWwtMCByb3ciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJjYXRlZ29yaWFbXSIgY2xhc3M9InNlbGVjdHBpY2tlciIgdGl0bGU9IkNhdGVnb3JpYS4uLiIgcmVxdWlyZWQgbXVsdGlwbGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCRjYXRlZ29yaWFzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJGNhdGVnb3JpYXMgYXMgJGNhdGVnb3JpYSkgez8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPD89ICRjYXRlZ29yaWFbJ2lkJ10/PiI+PD89ICRjYXRlZ29yaWFbJ25vbWUnXT8+PC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIH0gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4gDQogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLWRhbmdlciI+QWRpY2lvbmFyPC9idXR0b24+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9mb3JtPg0KICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KPC9kaXY+DQo8IS0tIENhZGFzdHJvIEdsb2JhbCBGaW0tLT4NCjwhLS0gRWRpdGFyIEdsb2JhbCBJbmljaW8gLS0+DQo8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIGJkLW1vZGFsLWxnIiBpZD0iZWRpdGFyR2xvYmFsIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJDYWRhc3RyYXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj4NCiAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIG1vZGFsLWxnIiByb2xlPSJkb2N1bWVudCI+DQogICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+DQogICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPg0KICAgICAgICA8aDUgY2xhc3M9Im1vZGFsLXRpdGxlIj5FZGl0YXIgTGlzdGE8L2g1Pg0KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJGZWNoYXIiPg0KICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPg0KICAgICAgICA8L2J1dHRvbj4NCiAgICAgIDwvZGl2Pg0KICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+DQogICAgICAgIDxmb3JtIGlkPSJlZGl0YXItZm9ybS1nbG9iYWwiPg0KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImlkR0UiIG5hbWU9ImlkIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Ob21lOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJub21lIiBpZD0ibm9tZUdFIiBwbGFjZWhvbGRlcj0iTm9tZSBkYSBMaXN0YSIgcmVxdWlyZWQgYXV0b2ZvY3VzPg0KICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImZvcm0tdGV4dCB0ZXh0LW11dGVkIj5DYW1wbyDDum5pY28hPC9zbWFsbD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4gDQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5DYXRlZ29yw61hczo8L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIG1sLTAgcm93Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImNhdGVnb3JpYUdFIiBuYW1lPSJjYXRlZ29yaWFbXSIgY2xhc3M9InNlbGVjdHBpY2tlciIgdGl0bGU9IkNhdGVnb3JpYS4uLiIgcmVxdWlyZWQgbXVsdGlwbGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCRjYXRlZ29yaWFzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJGNhdGVnb3JpYXMgYXMgJGNhdGVnb3JpYSkgez8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPD89ICRjYXRlZ29yaWFbJ2lkJ10/PiI+PD89ICRjYXRlZ29yaWFbJ25vbWUnXT8+PC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIH0gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4gIA0KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIiPjxpIGNsYXNzPSJmYXMgZmEtc2F2ZSI+PC9pPiBTYWx2YXI8L2J1dHRvbj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Zvcm0+DQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgPC9kaXY+DQo8L2Rpdj4NCjwhLS0gRWRpdGFyIEdsb2JhbCBGaW0tLT4NCjwhLS0gUmVtb3ZlIEluaWNpbyAtLT4NCjxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJyZW1vdmVyIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJDYWRhc3RyYXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj4NCiAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+DQogICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+DQogICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPg0KICAgICAgICA8aDUgY2xhc3M9Im1vZGFsLXRpdGxlIj5UZW0gY2VydGV6YT88L2g1Pg0KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJGZWNoYXIiPg0KICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPg0KICAgICAgICA8L2J1dHRvbj4NCiAgICAgIDwvZGl2Pg0KICAgICAgPGRpdiBpZD0icmVtb3Zlci1jb250ZXVkbyIgY2xhc3M9Im1vZGFsLWJvZHkiPjwvZGl2Pg0KICAgIDwvZGl2Pg0KICA8L2Rpdj4NCjwvZGl2Pg0KPCEtLSBSZW1vdmUgRmltLS0+DQo8IS0tIE9idGVyIExpbmsgSW5pY2lvIC0tPg0KPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9Im9idGVyTGlua2RhTGlzdGEiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9IkNhZGFzdHJhciIgYXJpYS1oaWRkZW49InRydWUiPg0KICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+DQogICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+DQogICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPg0KICAgICAgICA8aDUgY2xhc3M9Im1vZGFsLXRpdGxlIj5PYnRlciBMaW5rPC9oNT4NCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iRmVjaGFyIj4NCiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj4NCiAgICAgICAgPC9idXR0b24+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPg0KICAgICAgICA8Zm9ybSBpZD0iZm9ybU9idGVyTGlua2RhTGlzdGEiPg0KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImlkTGlzdGEiIG5hbWU9ImlkTGlzdGEiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgPGxhYmVsPlNlbGVjaW9uZSBvIFVzdcOhcmlvOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LXVzZXJzIG1sLTAgcm93Ij4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+T2J0ZXI8L2J1dHRvbj4NCiAgICAgICAgPC9mb3JtPg0KICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KPC9kaXY+DQo8IS0tIE9idGVyIExpbmsgRmltLS0+DQo8IS0tIExpbmsgSW5pY2lvIC0tPg0KPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImxpbmtMaXN0YSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iQ2FkYXN0cmFyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+DQogIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4NCiAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4NCiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+DQogICAgICAgIDxoNSBjbGFzcz0ibW9kYWwtdGl0bGUiPiBMaW5rPC9oNT4NCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iRmVjaGFyIj4NCiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj4NCiAgICAgICAgPC9idXR0b24+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPg0KICAgICAgICA8ZGl2Pg0KCQkgICAgDQogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9ImxpbmtJbiIgcmVhZG9ubHk+PGJyPg0KCQkJPGg1IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im5vdm9saW5rIiBpZD0ibm92b2xpbmsiIHJlYWRvbmx5PjwvaDU+DQogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGFuZ2VyIiBvbmNsaWNrPSJjb3BpYXJ1cmwoKSI+Q29waWFyPC9idXR0b24+DQoJCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGFuZ2VyIiBvbmNsaWNrPSJlbmN1cnRhcigpIj5FbmN1cnRhcjwvYnV0dG9uPg0KCQkJPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRhbmdlciIgb25jbGljaz0iY29waWFyZW5jdXRhZG9yKCkiPkNvcGlhciBFbmN1cnRhcjwvYnV0dG9uPg0KCQkJDQoJCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0iamF2YXNjcmlwdDogd2luZG93Lm9wZW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmtJbicpLnZhbHVlKTsiPkJhaXhhciBMaXN0YTwvYnV0dG9uPg0KICAgICAgICA8L2Rpdj4NCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICA8L2Rpdj4NCjwvZGl2Pg0KPCEtLSBMaW5rIEZpbS0tPg0KPC9ib2R5Pg0KPHNjcmlwdD4NCg0KICAgICQoIiNvYnRlckxpbmtkYUxpc3RhIikub24oJ2hpZGRlbi5icy5tb2RhbCcsIGZ1bmN0aW9uIChlKSB7DQogICAgICAgICQoIi5zZWxlY3QtdXNlcnMiKS5lbXB0eSgpOw0KICAgIH0pOw0KDQogICAgZnVuY3Rpb24gb2J0ZXJMaXN0YVVzdWFyaW9zKGlkKSB7DQogICAgICAgICQoJyNpZExpc3RhJykudmFsKGlkKTsNCiAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICAgIHVybDogImNvbnRyb2xlcy9vYnRlci1saXN0YS11c3Vhcmlvcy5waHAiLA0KICAgICAgICAgICAgZGF0YToge2lkOiBpZH0sDQogICAgICAgICAgICBkYXRhVHlwZToianNvbiIsDQogICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgICAgICAgdmFyICRzZWxlY3QgPSAkKCc8c2VsZWN0Lz4nLCB7DQogICAgICAgICAgICAgICAgICAgICdjbGFzcyc6InNlbGVjdHBpY2tlciIsDQogICAgICAgICAgICAgICAgICAgICd0aXRsZSc6IlVzdcOhcmlvLi4uIiwNCiAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAiaWRVc3VhcmlvIg0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqIDwgZGF0YS5sZW5ndGg7IGorKykgew0KICAgICAgICAgICAgICAgICAgICAkc2VsZWN0LmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0nICsgZGF0YVtqXS5pZF91c3VhcmlvICsgJz4nICsgZGF0YVtqXS5ub21lX3VzdWFyaW8gKyAnPC9vcHRpb24+Jyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRzZWxlY3QuYXBwZW5kVG8oJy5zZWxlY3QtdXNlcnMnKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgICAgICQoJyNvYnRlckxpbmtkYUxpc3RhJykubW9kYWwoKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBsaXN0YUdsb2JhbCgpIHsNCiAgICAgICAgJCgnI2NhZGFzdHJvJykubW9kYWwoJ2hpZGUnKTsNCiAgICAgICAgJCgnI2NhZGFzdHJvR2xvYmFsJykubW9kYWwoKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiByZW1vdmVyQ29uZmlybWEoaWQsbm9tZSkgew0KICAgICAgICAkKCcjcmVtb3Zlci1jb250ZXVkbycpLmh0bWwoJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciIgcm9sZT0iYWxlcnQiPjxzdHJvbmc+IFJlbW92ZXIgPC9zdHJvbmc+JyArIG5vbWUgKyAnPzwvZGl2PjxidXR0b24gb25jbGljaz0icmVtb3ZlcignICsgaWQgKyAnKSIgdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIgZmxvYXQtcmlnaHQiPlJlbW92ZXI8L2J1dHRvbj4nKTsNCiAgICAgICAgJCgnI3JlbW92ZXInKS5tb2RhbCgpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGVkaXRhckdsb2JhbENvbmZpcm1hKGlkLG5vbWUsIGxpc3RhKSB7DQogICAgICAgICQoJyNpZEdFJykudmFsKGlkKTsNCiAgICAgICAgJCgnI25vbWVHRScpLnZhbChub21lKTsNCiAgICAgICAgJCgnI25vbWVHRScpLnZhbChub21lKTsNCiAgICAgICAgJCgnI2NhdGVnb3JpYUdFJykudmFsKGxpc3RhKTsNCiAgICAgICAgJCgnI2NhdGVnb3JpYUdFJykuc2VsZWN0cGlja2VyKCdyZW5kZXInKTsNCiAgICAgICAgJCgnI2VkaXRhckdsb2JhbCcpLm1vZGFsKCk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gcmVtb3ZlcihpZCkgew0KICAgICAgICAkLmFqYXgoew0KICAgICAgICAgICAgdHlwZTogIlBPU1QiLA0KICAgICAgICAgICAgdXJsOiAiY29udHJvbGVzL3JlbW92ZXItbGlzdGEucGhwIiwNCiAgICAgICAgICAgIGRhdGE6IHtpZDogaWR9LA0KICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgJCggIiNjYWRhc3Ryby1mb3JtLWdsb2JhbCIgKS5zdWJtaXQoZnVuY3Rpb24oIGV2ZW50ICkgew0KICAgICAgICAkLmFqYXgoew0KICAgICAgICAgICAgdHlwZTogIlBPU1QiLA0KICAgICAgICAgICAgdXJsOiAiY29udHJvbGVzL2FkaWNpb25hci1saXN0YS1nbG9iYWwucGhwIiwNCiAgICAgICAgICAgIGRhdGE6ICQoIiNjYWRhc3Ryby1mb3JtLWdsb2JhbCIpLnNlcmlhbGl6ZSgpLA0KICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICByZXN1bHRhZG8oZGF0YS5yZXNwb25zZVRleHQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsNCiAgICB9KTsNCg0KICAgICQoICIjZWRpdGFyLWZvcm0tZ2xvYmFsIiApLnN1Ym1pdChmdW5jdGlvbiggZXZlbnQgKSB7DQogICAgICAgICQuYWpheCh7DQogICAgICAgICAgICB0eXBlOiAiUE9TVCIsDQogICAgICAgICAgICB1cmw6ICJjb250cm9sZXMvZWRpdGFyLWxpc3RhLWdsb2JhbC5waHAiLA0KICAgICAgICAgICAgZGF0YTogJCgiI2VkaXRhci1mb3JtLWdsb2JhbCIpLnNlcmlhbGl6ZSgpLA0KICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgICAgIHJlc3VsdGFkbyhkYXRhLnJlc3BvbnNlVGV4dCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgIH0pOw0KDQogICAgJCggIiNmb3JtT2J0ZXJMaW5rZGFMaXN0YSIgKS5zdWJtaXQoZnVuY3Rpb24oIGV2ZW50ICkgew0KICAgICAgICAkLmFqYXgoew0KICAgICAgICAgICAgdHlwZTogIlBPU1QiLA0KICAgICAgICAgICAgdXJsOiAiY29udHJvbGVzL29idGVyLWxpbmstbGlzdGEucGhwIiwNCiAgICAgICAgICAgIGRhdGE6ICQoIiNmb3JtT2J0ZXJMaW5rZGFMaXN0YSIpLnNlcmlhbGl6ZSgpLA0KICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICAgICQoJyNsaW5rSW4nKS52YWwoZGF0YSk7DQogICAgICAgICAgICAgICAgJCgnI29idGVyTGlua2RhTGlzdGEnKS5tb2RhbCgnaGlkZScpOw0KICAgICAgICAgICAgICAgICQoJyNsaW5rTGlzdGEnKS5tb2RhbCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsNCiAgICB9KTsNCg0KICAgIGZ1bmN0aW9uIGNvcGlhcnVybCgpIHsNCiAgICAgICAgJCgnI2xpbmtJbicpLnNlbGVjdCgpOw0KICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpOw0KICAgIH0NCgkNCglmdW5jdGlvbiBjb3BpYXJlbmN1dGFkb3IoKSB7DQogICAgICAgICQoJyNub3ZvbGluaycpLnNlbGVjdCgpOw0KICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpOw0KICAgIH0NCgkNCmZ1bmN0aW9uIGVuY3VydGFyKCkgew0KICB2YXIgdmFsb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGlua0luIikudmFsdWU7DQogICQuZ2V0SlNPTiggImh0dHBzOi8vaXMuZ2QvY3JlYXRlLnBocD9jYWxsYmFjaz0/Iiwgew0KICAgIHVybDogdmFsb3IsDQogICAgZm9ybWF0OiAianNvbiINCn0pLmRvbmUoZnVuY3Rpb24oIGRhdGEgKSB7DQogICAgbGV0IG5vdm9saW5rID0gZGF0YS5zaG9ydHVybDsNCgljb25zb2xlLmxvZyhub3ZvbGluayk7DQoJaWYobm92b2xpbmshPT11bmRlZmluZWQpDQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vdm9saW5rIikuaW5uZXJIVE1MID0gbm92b2xpbms7DQoJZWxzZSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm92b2xpbmsiKS5pbm5lckhUTUwgPSAiRXJybyBMaW5rIjsNCn0pOw0KfQ0KCQ0KPC9zY3JpcHQ+DQo8P3BocCByZXF1aXJlX29uY2UoImNvbXVtLnBocCIpOw0KcmVxdWlyZV9vbmNlKCJhbGVydGEucGhwIik7ID8+DQo8L2h0bWw+DQo8P3BocCANCn0gZWxzZSB7DQogICAgaGVhZGVyKCJMb2NhdGlvbjogaW5kZXgucGhwIik7DQogICAgZGllKCk7DQp9DQo/Pg=="));//Generated by Ampare PHP Encoder. For more security please use php protect before encode the php program
Function Calls
base64_decode | 1 |
Stats
MD5 | 79e3656ea88fdec82481285df444b09b |
Eval Count | 1 |
Decode Time | 63 ms |