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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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

Variables

None

Stats

MD5 79e3656ea88fdec82481285df444b09b
Eval Count 1
Decode Time 63 ms