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("PD9waHANCg0KaWYoJHVybF92YXI9PSdtZW1iZXJzJyl7DQogJHVybD0kX0d..
Decoded Output download
?>b'<?php
if($url_var==\'members\'){
$url=$_GET["id"];
$notes=NameRow3(\'rsclients\',\'notes\',$url,\'Id\');
$name_client=NameRow3(\'rsclients\',\'name\',$url,\'Id\');
$mobile=NameRow3(\'rsclients\',\'mobile\',$url,\'Id\');
$mobile2=NameRow3(\'rsclients\',\'mobile2\',$url,\'Id\');
$address=NameRow3(\'rsclients\',\'address\',$url,\'Id\');
$code=NameRow3(\'rsclients\',\'code\',$url,\'Id\');
$id_nat=NameRow3(\'rsclients\',\'id_nat\',$url,\'Id\');
$natio=NameRow3(\'nationalities\',\'name\',$id_nat,\'Id\');
$nat=NameRow3(\'rsclients\',\'nat\',$url,\'Id\');
$id_type_new=NameRow3(\'rsclients\',\'type_new\',$url,\'Id\');
$type_new=NameRow3(\'type_new\',\'name\',$id_type_new,\'Id\');
$height=NameRow3(\'rsclients\',\'height\',$url,\'Id\');
$weight=NameRow3(\'rsclients\',\'weight\',$url,\'Id\');
$image=NameRow3(\'rsclients\',\'image\',$url,\'Id\');
$cat=NameRow3(\'rsclients\',\'cat\',$url,\'Id\');
$gbs=NameRow3(\'rsclients\',\'gbs\',$url,\'Id\');
$amount=NameRow3(\'accounts\',\'amount\',$url,\'id_client\');
$balance=NameRow3(\'accounts\',\'balance\',$url,\'id_client\');
$vouchers=count_col6($url,"vouschers","id_client","amount");
?>
<div class="col-md-12">
<a href="edit.php?tnl%=DzgroEXunM/EPNmSJs8Vc1XgVEhFfoIMVZIu/wNijVk=&id=<?=$url?>" class="btn btn-warning">تعديل الملف</a>
</div>
<div class="col-md-12">
<a class=\'btn btn-embossed btn-success\' target="_blank" href="print.php?id=<?=$url?>&tnl%=card" >طباعه </a>
</div>
<div class="col-md-12">
<a class=\'btn btn-embossed btn-blue\' href="forms.php?fn%=JZHXOkYnyKz4jtFeZNdiwIdpywizvMcN03sKpsKf0N0=&id=<?=$url;?>" >اصدار اشتراك </a>
</div>
<div class="col-md-6 portlets ui-sortable">
<div class="panel">
<div class="panel-content sf-sky">
<div class="row invoice-page">
<div class="col-md-12 p-t-0">
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-6 m-t-20 m-b-20">
<p><h3><strong>اسم العضو:</strong> <?=$name_client;?></h3></p>
<p><h3><strong>رقم العضو:</strong> <?=$url;?></h3></p>
<p><h3><strong>الكود:</strong> <?=$code;?></h3></p>
<p><h3><strong>رقم الجوال :</strong> <?=$mobile;?></h3></p>
<p><h3><strong>الجنسيه:</strong> <?=$natio;?></h3></p>
<p><h3><strong>طريقه التعرف على النادي:</strong> <?=$type_new;?></h3></p>
</div>
<div class="col-md-6 m-t-20 m-b-20">
<p><h3><strong>الهويه:</strong> <?=$nat;?></h3></p>
<p><h3><strong>الطول:</strong> <?=$height;?></h3></p>
<p><h3><strong>الوزن:</strong> <?=$weight;?></h3></p>
<p><h3><strong>تفاصيل عن العضو:</strong></h3></p>
<div class="well bg-white">
<?=$notes;?> </div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 portlets ui-sortable">
<div class="panel">
<div class="panel-content sf-sky">
<div class="row invoice-page">
<div class="col-md-12 p-t-0">
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-12 m-t-20 m-b-20">
<p><h3><strong>اجمالي الاشتراكات:</strong> <?=$amount;?> </h3></p>
<p><h3><strong>اجمالي المدفوع:</strong> <?=$vouchers;?></h3></p>
<p><h3><strong>الرصيد:</strong> <?=$balance;?></h3></p>
</br></br></br>
</br></br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 portlets ui-sortable">
<div class="panel">
<div class="panel-content sf-sky">
<div class="row invoice-page">
<div class="col-md-12 p-t-0">
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-12 m-t-20 m-b-20">
<img src="uploads/prof/<?=$image;?>" width="350px" class="img-responsive0" >
<a href="forms-browse.php?tnl%=DzgroEXunM/EPNmSJs8Vc1XgVEhFfoIMVZIu/wNijVk=&id=<?=$url?>" class="btn btn-info">تحديث صورة البروفبل</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-12 portlets ui-sortable">
<div class="panel">
<div class="panel-header panel-controls">
<h3>
<i class="fa fa-table"></i>
<strong>الاشتراكات</strong>
</h3>
</div>
<div class="panel-content">
<table class="table">
<thead>
<tr>
<th bgcolor="#bec0bb">رقم الاشتراك</th>
<th bgcolor="#bec0bb">الباقة</th>
<th bgcolor="#bec0bb">الاجمالي</th>
<th bgcolor="#bec0bb">تاريخ الاشتراك</th>
<th bgcolor="#bec0bb">تاريخ بدايه اشتراك</th>
<th bgcolor="#bec0bb">تاريخ انتهاء اشتراك</th>
<th bgcolor="#bec0bb">حاله الاشتراك</th>
<th bgcolor="#bec0bb">بدايه الاشتراك</th>
<th bgcolor="#bec0bb">ايقاف</th>
<th bgcolor="#bec0bb">الحضور</th>
</tr>
</thead>
<tbody>
<?
$bg999= mysql_query("SELECT * FROM tkorders where id_client=\'$url\'") or die("MySQL Login Error: ".mysql_error());
while($rows = mysql_fetch_array($bg999))
{
if($rows[\'status\']==\'1\')
$CSS="warning";
if($rows[\'status\']==\'3\')
$CSS="danger";
if($rows[\'status\']==\'2\')
$CSS="success";
if($rows[\'status\']==\'4\')
$CSS="dark";
?>
<tr class="<?echo $CSS;?>">
<td><a href="forms-browse.php?id=<?=$rows[\'Id\']?>&tnl%=xzsPbchRNvK9XiZbCpiTJ6jJcpojY4CZ5IBZGaO2HGw=" class="btn btn-primary">0<?echo $rows[\'Id\'];?></a></td>
<td><?echo NameRow($rows[\'id_service\'],"plans");?></td>
<td><?echo $rows[\'total\'];?></td>
<td><?echo $rows[\'datetime\'];?></td>
<td><?echo $rows[\'s_date\'];?></td>
<td><?echo $rows[\'e_date\'];?></td>
<td><?echo NameRow($rows[\'status\'],"sysstatus");?></td>
<td>
<?php if($rows[\'start\']==""){
?>
<input type="submit" name="log_slider" value="بدء الاشتراك" class="btn btn-primary">
<? }elseif($rows[\'start\']!=""){?>
<?echo $rows[\'start\'];?>
<? }else{?>
الخدمه عير متاحه
<? }?>
</td>
<td>
<?php if($rows[\'status\']=="2" ){
?>
<input type="submit" name="log_slider" value="تعطيل" class="btn btn-danger">
<? }elseif($rows[\'status\']=="3"){?>
<input type="submit" name="log_slider" value="تفعيل" class="btn btn-success">
<? }else{?>
الخدمه غير متاحه
<? }?>
</td>
<td>
<?php if($rows[\'status\']=="2" ){
?>
<input type="submit" name="log_slider" value="حضور" class="btn btn-primary">
<? }else{?>
الخدمه غير متاحه
<? }?>
</td>
</tr>
<?}?>
</tbody>
</table>
</div>
</div>
</div>
<?
}
if($url_var==\'rsclients\'){
$url=$_GET["id"];
$notes=NameRow3(\'rsclients\',\'notes\',$url,\'Id\');
$name_client=NameRow3(\'rsclients\',\'name\',$url,\'Id\');
$mobile=NameRow3(\'rsclients\',\'mobile\',$url,\'Id\');
$mobile2=NameRow3(\'rsclients\',\'mobile2\',$url,\'Id\');
$address=NameRow3(\'rsclients\',\'address\',$url,\'Id\');
$code=NameRow3(\'rsclients\',\'code\',$url,\'Id\');
$id_nat=NameRow3(\'rsclients\',\'id_nat\',$url,\'Id\');
$natio=NameRow3(\'rsclients\',\'nationalities\',$url,\'Id\');
$nat=NameRow3(\'rsclients\',\'nat\',$url,\'Id\');
$height=NameRow3(\'rsclients\',\'height\',$url,\'Id\');
$weight=NameRow3(\'rsclients\',\'height\',$url,\'Id\');
$image=NameRow3(\'rsclients\',\'image\',$url,\'Id\');
$cat=NameRow3(\'rsclients\',\'cat\',$url,\'Id\');
$gbs=NameRow3(\'rsclients\',\'gbs\',$url,\'Id\');
?>
<div class="panel">
<div class="panel-content sf-sky">
<div class="row invoice-page">
<div class="col-md-12 p-t-0">
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-6 m-t-20 m-b-20">
<a href="forms-browse.php?tnl%=YSAaXhOyyfzroeY0toPP9r0OkdYGucQvJwC0JphwCkc=&id=<?=$url?>" class="btn btn-info"> رجوع البروفبل</a>
<div class="camcontent">
<video id="video" autoplay="autoplay" width="300" height="150"></video>
<canvas id="canvas" width="640" height="480"> </canvas>
</div>
<!-- Font awsome icons used in buttons -->
<div class="cambuttons" style="margin-top: 10px;">
<button id="snap" class="btn btn-default btn-lg" style="display: none;"> <i class="fa fa-camera"></i> التقط الصوره </button>
<button id="reset" class="btn btn-default btn-lg" style="display: none;"> <i class="fa fa-camera"></i> Take new picture </button>
<button id="upload" class="btn btn-default btn-lg" style="display: none;"> <i class="fa fa-save"></i> Save </button>
<span id="uploading" style="display: none;"> حفظ الصوره</span>
<span id="uploaded" style="display: none;"> تم التحميل بنجاح <a> Return </a> </span></div>
<div id="camFeedback"></div>
<script>// <![CDATA[
navigator.getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia );
if (navigator.getUserMedia) {
navigator.getUserMedia({
video:true,
audio:false
},
function(stream) { /* do-say something */ },
function(error) {
alert(\'Something went wrong. (error code \' + error.code + \')\');
return false;
});
} else {
alert("Sorry, the browser you are using doesn\'t support the HTML5 webcam API");
return false;
}
// ]]></script>
<script>// <![CDATA[
// Put event listeners into place
window.addEventListener("DOMContentLoaded", function() {
// Grab elements, create settings, etc.
var canvas = document.getElementById("canvas"),
context = canvas.getContext("2d"),
video = document.getElementById("video"),
videoObj = { "video": true },
image_format= "jpeg",
jpeg_quality= 85,
errBack = function(error) {
console.log("Video capture error: ", error.code);
};
// Put video listeners into place
if(navigator.getUserMedia) { // Standard
navigator.getUserMedia(videoObj, function(stream) {
video.src = stream;
video.play();
$("#snap").show();
}, errBack);
} else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
navigator.webkitGetUserMedia(videoObj, function(stream){
video.src = window.webkitURL.createObjectURL(stream);
video.play();
$("#snap").show();
}, errBack);
} else if(navigator.mozGetUserMedia) { // moz-prefixed
navigator.mozGetUserMedia(videoObj, function(stream){
video.src = window.URL.createObjectURL(stream);
video.play();
$("#snap").show();
}, errBack);
}
// video.play(); these 2 lines must be repeated above 3 times
// $("#snap").show(); rather than here once, to keep "capture" hidden
// until after the webcam has been activated.
// Get-Save Snapshot - image
document.getElementById("snap").addEventListener("click", function() {
context.drawImage(video, 0, 0, 640, 480);
// the fade only works on firefox?
$("#video").fadeOut("slow");
$("#canvas").fadeIn("slow");
$("#snap").hide();
$("#reset").show();
$("#upload").show();
});
// reset - clear - to Capture New Photo
document.getElementById("reset").addEventListener("click", function() {
$("#video").fadeIn("slow");
$("#canvas").fadeOut("slow");
$("#snap").show();
$("#reset").hide();
$("#upload").hide();
});
// Upload image to sever
document.getElementById("upload").addEventListener("click", function(){
var dataUrl = canvas.toDataURL("image/jpeg", 0.85);
$("#uploading").show();
$.ajax({
type: "POST",
url: "savePicture.php?id=<?php echo $url; ?>",
data: {
imgBase64: dataUrl
},
success: function(data){
console.log(data);
$(\'#camFeedback\').html(data);
}
}).done(function(msg) {
console.log("saved");
$("#uploading").hide();
$("#uploaded").show();
});
});
}, false);
// ]]></script>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?
}
if($url_var==\'tkorders\'){
$url=$_GET["id"];
$title=NameRow3(\'tkorders\',\'title\',$url,\'Id\');
$id_driver=NameRow3(\'tkorders\',\'id_driver\',$url,\'Id\');
$id_client=NameRow3(\'tkorders\',\'id_client\',$url,\'Id\');
$down=NameRow3(\'tkorders\',\'down\',$url,\'Id\');
$name_client=NameRow3(\'rsclients\',\'name\',$id_client,\'Id\');
$date_ordr=NameRow3(\'tkorders\',\'datetime\',$url,\'Id\');
$notes=NameRow3(\'tkorders\',\'nots\',$url,\'Id\');
$mobile=NameRow3(\'rsclients\',\'mobile\',$id_client,\'Id\');
$mobile2=NameRow3(\'rsclients\',\'mobile2\',$id_client,\'Id\');
$address=NameRow3(\'rsclients\',\'address\',$id_client,\'Id\');
$gbs=NameRow3(\'rsclients\',\'gbs\',$id_client,\'Id\');
$e_date=NameRow3(\'tkorders\',\'e_date\',$url,\'Id\');
$s_date=NameRow3(\'tkorders\',\'s_date\',$url,\'Id\');
$status=NameRow3(\'tkorders\',\'status\',$url,\'Id\');
$start=NameRow3(\'tkorders\',\'start\',$url,\'Id\');
$dur=NameRow3(\'tkorders\',\'days\',$url,\'Id\');
$image=NameRow3(\'rsclients\',\'image\',$id_client,\'Id\');
$count_attent=count_col4("attend","id_order",$url);
$abs_attent=count_col4("abs","id_order",$url);
$name_status=NameRow1($status,"sysstatus","name");
$day_last=NameRow3(\'abs\',\'days\',$url,\'id_order\');
$date_last=NameRow3(\'abs\',\'date\',$url,\'id_order\');
$s_date22=date(\'d-m-Y\', strtotime($date_last."+".$day_last."days"));
?>
<!-- BEGIN PAGE SCRIPT -->
<script src="assets/plugins/datatables/jquery.dataTables.min.js"></script> <!-- Tables Filtering, Sorting & Editing -->
<script src="assets/js/pages/table_dynamic.js"></script>
<script src="assets/plugins/bootstrap-loading/lada.min.js"></script> <!-- Buttons Loading State -->
<div class="col-md-12 p-t-0">
<div class="col-md-4">
<!--<a class="btn btn-primary" href="edit-forms.php?fn%=ujnHBn0EWd3jmKL4YoGUDb7yskrBH245iSE7eJgh3CQ=&id=<?=$url;?>">الانتقال لصفحة المحتوى</a>-->
<!--<a class=\'btn btn-embossed btn-primary\' href="forms.php?fn%=aWfmBZU7EyE3UxB1kQh7ydcEsu02oFObf8YQBaWvKNc=&id=<?//=$row2[\'Id\'];?>">الانتقال لصفحة المحتوى</a> -->
<a class=\'btn btn-embossed btn-primary\' href="edit-forms.php?fn%=xzsPbchRNvK9XiZbCpiTJ6jJcpojY4CZ5IBZGaO2HGw=&id=<?=$url;?>" >تعديل الاشتراك</a>
<a class=\'btn btn-embossed btn-blue\' href="forms.php?fn%=YSAaXhOyyfzroeY0toPP9r0OkdYGucQvJwC0JphwCkc=&id=<?=$url;?>" >تجديد الاشتراك</a>
<a class=\'btn btn-embossed btn-success\' target="_blank" href="print.php?id=<?echo $url;?>&tnl%=tkorders" >طباعه الاشتراك</a>
</div>
<style>
.span3 {
height: 100px !important;
overflow: scroll;
}​
</style>
<a href="tables-filter.html#" class="scrollup"><i class="fa fa-angle-up"></i></a>
<script src="assets/plugins/datatables/jquery.dataTables.min.js"></script> <!-- Tables Filtering, Sorting & Editing -->
<script src="assets/js/pages/table_dynamic.js"></script>
<script src="assets/plugins/bootstrap-loading/lada.min.js"></script> <!-- Buttons Loading State -->
<div class="panel-content">
<table class="table table-hover table-dynamic filter-select">
<thead>
<tr>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<?
if(isset($_POST[\'start\'])) {
$s_date2="YES";
$date=date("Y-m-d H:i:s",time());
$update11=UpdateRow("tkorders","start",$date,"Id",$url);
$update111=UpdateRow("tkorders","status","2","Id",$url);
$date25=date("d-m-Y");
$date_to=strtotime($date25);
$date_to2=strtotime($e_date);
$days_b1 = ceil(abs($date_to-$date_to2) / 86400);
$days5= $dur-$days_b1;
$update115=UpdateRow("tkorders","s_date",$date25,"Id",$url);
$e_date_x=date(\'d-m-Y\', strtotime($date25. "+".$dur."days"));
$update116=UpdateRow("tkorders","e_date",$e_date_x,"Id",$url);
$update11=UpdateRow("tkorders","days_out",$dur,"Id",$url);
print "<script>";
print " self.location=\'forms-browse.php?id=$url&tnl%=xzsPbchRNvK9XiZbCpiTJ6jJcpojY4CZ5IBZGaO2HGw=\';"; // Comment this line if you don\'t want to redirect
print "</script>";
}
if(isset($_POST[\'attend\'])) {
$s_date2="YES";
$date=date("Y-m-d");
$time=date("H:i:s",time());
$date2=NameRow3(\'attend\',\'date\',$url,\'id_order\');
if($date==$date2){
}else{
$add2=InsertCol5("attend","id_client","id_user","id_order","date","time",$id_client,$id_user_on,$url,$date,$time);
}
print "<script>";
print " self.location=\'forms-browse.php?id=$url&tnl%=xzsPbchRNvK9XiZbCpiTJ6jJcpojY4CZ5IBZGaO2HGw=\';"; // Comment this line if you don\'t want to redirect
print "</script>";
}
if(isset($_POST[\'abs\'])) {
$s_date2="YES";
$date=date("Y-m-d");
$time=date("H:i:s",time());
$days2=$_POST[\'days2\'];
$date2=NameRow3(\'abs\',\'date\',$url,\'id_order\');
$update111=UpdateRow("tkorders","status","3","Id",$url);
$e_date22=date(\'d-m-Y\', strtotime($e_date."+".$days2."days"));
$update112=UpdateRow("tkorders","e_date",$e_date22,"Id",$url);
$add2=InsertCol6("abs","id_client","id_user","id_order","date","time","days",$id_client,$id_user_on,$url,$date,$time,$days2);
print "<script>";
print " self.location=\'forms-browse.php?id=$url&tnl%=xzsPbchRNvK9XiZbCpiTJ6jJcpojY4CZ5IBZGaO2HGw=\';"; // Comment this line if you don\'t want to redirect
print "</script>";
}
if(isset($_POST[\'abs2\'])) {
$s_date2="YES";
$date=date("d-m-Y");
$time=date("H:i:s",time());
$date25=date("d-m-Y");
$date_to=strtotime($date25);
$date_to2=strtotime($e_date);
$days_b1=ceil(abs($date_to-$date_to2) / 86400);
$days5=$days_b1-$dur;
$e_date_1=date(\'d-m-Y\', strtotime($s_date."+".$days_b1."days"));
$update11=UpdateRow("tkorders","days_out",$days_b1,"Id",$url);
$update112=UpdateRow("tkorders","e_date",$e_date_1,"Id",$url);
$update111=UpdateRow("tkorders","status","2","Id",$url);
print "<script>";
print " self.location=\'forms-browse.php?id=$url&tnl%=xzsPbchRNvK9XiZbCpiTJ6jJcpojY4CZ5IBZGaO2HGw=\';"; // Comment this line if you don\'t want to redirect
print "</script>";
}
?>
<div class="col-md-6 portlets ui-sortable">
<div class="panel">
<div class="panel-content sf-sky">
<div class="row invoice-page">
<div class="col-md-12 p-t-0">
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-6 m-t-20 m-b-20">
<p><h3><strong>اسم العضو:</strong> <?=$name_client;?></h3></p>
<p><h3><strong>رقم العضو:</strong> <?=$id_client;?></h3></p>
<p><h3><strong>رقم الجوال :</strong> <?=$mobile;?></h3></p>
<p><h3><strong>تاريخ تسجيل الاشتراك:</strong> <?=$date_ordr;?></h3></p>
<p><h3><strong>تاريخ بداية الاشتراك:</strong> <?=$s_date;?></h3></p>
<p><h3><strong>تاريخ نهاية الاشتراك:</strong> <?=$e_date;?></h3></p>
</div>
<div class="col-md-6 m-t-20 m-b-20">
<p><h3><strong>بدء الاشتراك:</strong>
<?php if($start==""){
?>
<form class="title" action="" method="post" width=\'50%\' name="result" >
<input type="submit" name="start" value="بدء الاشتراك" class="btn btn-primary">
<? }elseif($start!=""){?>
<?echo $start;?>
<? }else{?>
الخدمه عير متاحه
<? }?></h3></p>
</h3></p>
<p><h3><strong>حاله الاشتراك:</strong> <?=$name_status;?></h3></p>
<form class="title" action="" method="post" width=\'50%\' name="result" >
<p><h3><strong> الاشتراك:</strong>
<?php if($status=="2" ){
?>
<input type="text" name="days2" placeholder="عدد الايام" value="0" size="5" class="btn btn-danger">
<input type="submit" name="abs" value="تعطيل" class="btn btn-danger">
</form>
<form class="title" action="" method="post" width=\'50%\' name="result" >
<? }elseif($status=="3"){?>
<input type="submit" name="abs2" value="تفعيل" class="btn btn-success">
<? }else{?>
الخدمه غير متاحه
<? }?>
</h3></p>
<form class="title" action="" method="post" width=\'50%\' name="result" >
<p><h3><strong>تسجيل الحضور:</strong>
<?php if($status=="2" ){
?>
<input type="submit" name="attend" value="حضور" class="btn btn-primary">
<? }else{?>
الخدمه غير متاحه
<? }?>
</h3></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 portlets ui-sortable">
<div class="panel">
<div class="panel-content sf-sky">
<div class="row invoice-page">
<div class="col-md-12 p-t-0">
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-12 m-t-20 m-b-20">
<p><h3><strong>ايام الاشتراك:</strong> <?=$dur;?></h3></p>
<p><h3><strong>المتبقى من الاشتراك :</strong> <?=$dur;?></h3></p>
<p><h3><strong>عدد الحضور:</strong> <?=$count_attent;?> </h3></p>
<p><h3><strong>عدد الايقافات:</strong> <?=$count_abs;?></h3></p>
</br></br></br>
</br></br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 portlets ui-sortable">
<div class="panel">
<div class="panel-content sf-sky">
<div class="row invoice-page">
<div class="col-md-12 p-t-0">
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-12 m-t-20 m-b-20">
<img src="uploads/prof/<?=$image;?>" width="350px" class="img-responsive0" >
<a href="forms-browse.php?tnl%=DzgroEXunM/EPNmSJs8Vc1XgVEhFfoIMVZIu/wNijVk=&id=<?=$url?>" class="btn btn-info">تحديث صورة البروفبل</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 portlets">
<div class="panel">
<div class="panel-header panel-controls">
<h2>
الفواتير
</h2>
</div>
<div class="panel-content">
<table class="table table-hover table-dynamic filter-select">
<thead>
<tr>
<th bgcolor="#bec0bb">رقم الاشتراك</th>
<th bgcolor="#bec0bb">الباقة</th>
<th bgcolor="#bec0bb"مصدر الفاتورة</th>
<th bgcolor="#bec0bb">تاريخ الفاتوره</th>
<th bgcolor="#bec0bb">المبلغ</th>
<th bgcolor="#bec0bb">طباعه الفاتورة</th>
</tr>
</thead>
<tbody>
<?
$bg9999= mysql_query("SELECT * FROM tkorders_details where id_order=\'$url\'") or die("MySQL Login Error: ".mysql_error());
while($rows = mysql_fetch_array($bg9999))
{
if($rows[\'status\']==\'1\')
$CSS="warning";
if($rows[\'status\']==\'3\')
$CSS="danger";
if($rows[\'status\']==\'2\')
$CSS="success";
if($rows[\'status\']==\'4\')
$CSS="dark";
?>
<tr class="<?echo $CSS;?>">
<td><a href="#" class="btn btn-primary"><?echo $rows[\'Id\'];?></a></td>
<td><?echo NameRow($rows[\'id_service\'],"plans");?></td>
<td><?echo NameRow($rows[\'id_user\'],"login");?></td>
<td><?echo $rows[\'datetime\'];?></td>
<td><?echo $rows[\'total\'];?></td>
<td><a class=\'btn btn-embossed btn-success\' target="_blank" href="print.php?id=<?echo $rows[\'Id\'];?>&tnl%=tkorders_details" >طباعه الفاتوره</a></td>
<?}?>
</tbody>
</table>
</div>
</div>
</div>
<div class="col-md-6 portlets">
<div class="panel">
<div class="panel-header panel-controls">
<h2>
سندات الاشتراك
</h2>
</div>
<div class="panel-content">
<table class="table table-hover table-dynamic filter-select">
<thead>
<tr>
<th bgcolor="#bec0bb">رقم السند</th>
<th bgcolor="#bec0bb"مصدر السند</th>
<th bgcolor="#bec0bb">تاريخ السند</th>
<th bgcolor="#bec0bb">نوع الدفع</th>
<th bgcolor="#bec0bb">المبلغ</th>
<th bgcolor="#bec0bb">طباعه السند</th>
</tr>
</thead>
<tbody>
<?
$bg99999= mysql_query("SELECT * FROM vouschers where id_fatora=\'$url\'") or die("MySQL Login Error: ".mysql_error());
while($rows = mysql_fetch_array($bg99999))
{
$id_vv=$rows[\'Id\'];
if($rows[\'status\']==\'1\')
$CSS="warning";
if($rows[\'status\']==\'3\')
$CSS="danger";
if($rows[\'status\']==\'2\')
$CSS="success";
if($rows[\'status\']==\'4\')
$CSS="dark";
?>
<tr class="<?echo $CSS;?>">
<td><a href="#" class="btn btn-primary"><?echo $rows[\'Id\'];?></a></td>
<td><?echo NameRow($rows[\'id_user\'],"login");?></td>
<td><?echo $rows[\'datetime\'];?></td>
<td><?echo NameRow($rows[\'type_pay\'],"type_pay");?></td>
<td><?echo $rows[\'amount\'];?></td>
<td>
<a class=\'btn btn-embossed btn-success\' target="_blank" href="print.php?id=<?=$id_vv?>&tnl%=vouschers" >طباعه </a>
</td>
<?}?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 portlets">
<div class="panel">
<div class="panel-header panel-controls">
<h2>
الحضور
</h2>
</div>
<div class="panel-content">
<table class="table table-hover table-dynamic filter-select">
<thead>
<tr>
<th bgcolor="#bec0bb">التسلسل</th>
<th bgcolor="#bec0bb">مصدر </th>
<th bgcolor="#bec0bb">تاريخ </th>
<th bgcolor="#bec0bb">الوقت</th>
</tr>
</thead>
<tbody>
<?
$bg9999= mysql_query("SELECT * FROM attend where id_order=\'$url\'") or die("MySQL Login Error: ".mysql_error());
while($rows = mysql_fetch_array($bg9999))
{
if($rows[\'status\']==\'1\')
$CSS="warning";
if($rows[\'status\']==\'3\')
$CSS="danger";
if($rows[\'status\']==\'2\')
$CSS="success";
if($rows[\'status\']==\'4\')
$CSS="dark";
?>
<tr class="<?echo $CSS;?>">
<td><a href="#" class="btn btn-primary"><?echo $rows[\'Id\'];?></a></td>
<td><?echo NameRow($rows[\'id_user\'],"login");?></td>
<td><?echo $rows[\'date\'];?></td>
<td><?echo $rows[\'time\'];?></td>
<?}?>
</tbody>
</table>
</div>
</div>
</div>
<div class="col-md-6 portlets">
<div class="panel">
<div class="panel-header panel-controls">
<h2>
الايقافات
</h2>
</div>
<div class="panel-content">
<table class="table table-hover table-dynamic filter-select">
<thead>
<tr>
<th bgcolor="#bec0bb">التسلسل</th>
<th bgcolor="#bec0bb">مصدر </th>
<th bgcolor="#bec0bb">تاريخ </th>
<th bgcolor="#bec0bb">الوقت</th>
<th bgcolor="#bec0bb">عدد الايام</th>
<th bgcolor="#bec0bb">طباعه</th>
</tr>
</thead>
<tbody>
<?
$bg9999= mysql_query("SELECT * FROM abs where id_order=\'$url\'") or die("MySQL Login Error: ".mysql_error());
while($rows = mysql_fetch_array($bg9999))
{
if($rows[\'status\']==\'1\')
$CSS="warning";
if($rows[\'status\']==\'3\')
$CSS="danger";
if($rows[\'status\']==\'2\')
$CSS="success";
if($rows[\'status\']==\'4\')
$CSS="dark";
?>
<tr class="<?echo $CSS;?>">
<td><a href="#" class="btn btn-primary"><?echo $rows[\'Id\'];?></a></td>
<td><?echo NameRow($rows[\'id_user\'],"login");?></td>
<td><?echo $rows[\'date\'];?></td>
<td><?echo $rows[\'time\'];?></td>
<td><?echo $rows[\'days\'];?></td>
<td><a class=\'btn btn-embossed btn-success\' target="_blank" href="print.php?id=<?echo $rows[\'Id\'];?>&tnl%=abs" >طباعه الايقاف</a></td>
<?}?>
</tbody>
</table>
</div>
</div>
</div>
<?
}
if($url_var==\'joborders\'){
$job_order_title=NameRow1($id_var,"joborders","job_order_title");
$notes=NameRow1($id_var,"joborders","notes");
$title_j=NameRow1($id_var,"joborders","job_order_title");
$s_date=NameRow1($id_var,"joborders","date_job_orders_s");
$e_date=NameRow1($id_var,"joborders","date_job_orders_e");
$datetime=NameRow1($id_var,"joborders","datetime");
$id_branch=NameRow1($id_var,"joborders","id_branch");
$branch=NameRow1($id_branch,"category","name");
$id_empp=NameRow1($id_var,"joborders","id_emp");
$id_userr=NameRow1($id_var,"joborders","id_user");
$name_employee=NameRow1($id_empp,"login","name");
$name_userr=NameRow1($id_userr,"login","name");
$status_j=NameRow1($id_var,"joborders","status");
$date_pend=NameRow1($id_var,"joborders","date_pending");
$file_j=NameRow1($id_var,"joborders","file");
$eva=NameRow1($id_var,"joborders","eva");
$id_req=NameRow1($id_var,"joborders","id_request");
$title_ord=NameRow1($id_req,"tkorders","title");
$id_client=NameRow3(\'tkorders\',\'id_client\',$id_req,\'Id\');
$name_client=NameRow3(\'rsclients\',\'name\',$id_client,\'Id\');
$e_date_c=NameRow3(\'tkorders\',\'e_date\',$id_req,\'Id\');
$name_file="تحميل الملف المرفق";
if($file_j=="")
$disabled1="disabled";
if($file_j=="")
$name_file="لايوجد ملف";
$tmt=date(\'m/d/Y\');
$error = "";
$error2 = "";
$error3 = "";
$url=$_GET["id"];
$id_job=$_GET["id"];
$type_s="submit";
$type1="";
$but1="hidden";
$but2="hidden";
$but3="hidden";
if($id_user_on==$id_empp&$status_j!="24")
$but1="button";
if($id_user_on==$id_userr&$status_j!="24")
$but2="button";
if($id_user_on==$id_userr&$status_j!="24")
$but3="button";
$type2="submit";
$edit2="";
$j_p="disabled";
if($status_j=="18")
$j_p="";
if($id_userr==$userid)
$j_p="disabled";
///////////////////////opened///////////////////////////
if($status_j=="18")
$status_bar="20";
if($status_j=="18")
$status_name=NameRow1($status_j,"sysstatus","name");
if($status_j=="18")
$status_css="primary";
///////////////////////pending///////////////////////
if($status_j=="19")
$status_bar="40";
if($status_j=="19")
$status_name=NameRow1($status_j,"sysstatus","name");
if($status_j=="19")
$date_status=NameRow1($id_var,"joborders","date_pending");
if($status_j=="19")
$status_css="warning";
///////////////////////done//////////////////////////////////
if($status_j=="20")
$status_bar="70";
if($status_j=="20")
$status_name=NameRow1($status_j,"sysstatus","name");
if($status_j=="20")
$date_status=NameRow1($id_var,"joborders","date_done");
if($status_j=="20")
$status_css="blue";
/////////////////////////faield/////////////////////////////////
if($status_j=="21")
$status_bar="70";
if($status_j=="21")
$status_name=NameRow1($status_j,"sysstatus","name");
if($status_j=="21")
$date_status=NameRow1($id_var,"joborders","date_failed");
if($status_j=="21")
$status_css="danger";
/////////////////////////donesucsses/////////////////////////////
if($status_j=="22")
$status_bar="100";
if($status_j=="22")
$status_name=NameRow1($status_j,"sysstatus","name");
if($status_j=="22")
$date_status=NameRow1($id_var,"joborders","date_done_success");
if($status_j=="22")
$status_css="success";
////////////////////////done_failed/////////////////////////////////////////////////////////////////
if($status_j=="23")
$status_bar="100";
if($status_j=="23")
$status_name=NameRow1($status_j,"sysstatus","name");
if($status_j=="23")
$date_status=NameRow1($id_var,"joborders","date_done_failed");
if($status_j=="23")
$status_css="danger";
/////////////////////////////////////////////////////////////////////////////////////
if($status_j=="24")
$status_bar="100";
if($status_j=="24")
$status_name=NameRow1($status_j,"sysstatus","name");
if($status_j=="24")
$date_status=NameRow1($id_var,"joborders","date_done_failed");
if($status_j=="24")
$status_css="danger";
/////////////////////////////////////////////////////////////////////////////////////
if(isset($_POST[\'replay-form\'])) {
$file_size=$_FILES["file"]["size"];
$current_image=$_FILES[\'file\'][\'name\'];
$extension = substr(strrchr($current_image, \'.\'), 1);
$image = rand(1,99999).\'.\'.end($current_image).$extension;
$destination="uploads/requests/".$image;
if($current_image=="")
$image="";
$id_emp=NameRow3("request_details","id_user",$id_var,"id_request");
// $id_emp=NameRow3("request_details","id_request",$id_var,"id_emp");
//$request_title=NameRow1($id_var,"request","request_title");
$success = true;
$RequestTools= new RequestTools();
$upload_size=NameRow3("emp_settings","upload_size",$id_emp_s,"id_emp");
if($RequestTools->check_Image($file_size,$upload_size))
{
$error3 .= "* مساحة الملف اكبر من المساحه المحدده</p/> nr";
$success = false;
}
////////////////////////////checkbox//////////
if($_POST[\'notes\']=="")
{
$error4= "* لاتوجد تفاصيل للطلب </p/> nr";
$success = false;
}
if($success)
{
$data2[\'id_emp\']=$id_emp;
$data2[\'id_user\']= $id_user_on; //encrypt the password for storage
$data2[\'notes\']=$_POST[\'notes\']; //encrypt the password for storage
$data2[\'file\']=$image; //encrypt the password for storage
$data2[\'id_request\']=$id_var; //encrypt the password for storage
$action = copy($_FILES[\'file\'][\'tmp_name\'], $destination);
$req_det = new Request_details($data2);
$req_det->save(true);
print "<script>";
print " self.location=\'forms-browse.php?id=$id_var&tnl%=$urf\';"; // Comment this line if you don\'t want to redirect
print "</script>";
}}
if(isset($_POST[\'agree-to\'])) {
$file_size=$_FILES["file"]["size"];
$current_image=$_FILES[\'file\'][\'name\'];
$extension = substr(strrchr($current_image, \'.\'), 1);
$image = rand(1,99999).\'.\'.end($current_image).$extension;
$destination="uploads/requests/".$image;
if($current_image=="")
$image="";
$id_emp=NameRow3("request_details","id_request",$id_var,"id_user");
// $id_emp=NameRow3("request_details","id_request",$id_var,"id_emp");
//$request_title=NameRow1($id_var,"request","request_title");
$success = true;
$RequestTools= new RequestTools();
$upload_size=NameRow3("emp_settings","upload_size",$id_emp_s,"id_emp");
if($RequestTools->check_Image($file_size,$upload_size))
{
$error3 .= "* مساحة الملف اكبر من المساحه المحدده</p/> nr";
$success = false;
}
////////////////////////////checkbox//////////
if($_POST[\'notes\']=="")
{
$error4= "* لاتوجد تفاصيل للطلب </p/> nr";
$success = false;
}
if($_POST[\'id_emp\']=="")
{
$error5= "* لم يتم اختيار المدير </p/> nr";
$success = false;
}
if($success)
{
$data2[\'id_emp\']=$_POST[\'id_emp\'];
$data2[\'id_user\']= $id_user_on; //encrypt the password for storage
$data2[\'notes\']=$_POST[\'notes\']; //encrypt the password for storage
$data2[\'file\']=$image; //encrypt the password for storage
$data2[\'id_request\']=$id_var; //encrypt the password for storage
$action = copy($_FILES[\'file\'][\'tmp_name\'], $destination);
$req_det = new Request_details($data2);
$req_det->save(true);
print "<script>";
print " self.location=\'forms-browse.php?id=$id_var&tnl%=$urf\';"; // Comment this line if you don\'t want to redirect
print "</script>";
}}
if(isset($_POST[\'agree-form\'])) {
$id_app=$id;
$date_app=$_POST[\'date_app\'];
$time_app=$_POST[\'time_app\'];
$id_mang=$_POST[\'id_mang\'];
$notes=$_POST[\'notes\'];
$status="4";
$data[\'id_app\']=$id_app;
$data[\'date_app\']= $date_app; //encrypt the password for storage
$data[\'time_app\']= $time_app; //encrypt the password for storage
$data[\'id_mang\']= $id_mang; //encrypt the password for storage
$data[\'notes\']= $notes; //encrypt the password for storage
$data[\'status\'] =$status;
$newEmpappapp= new Empappapp($data);
$newEmpappapp->save(true);
$data2[\'id\'] =$id;
$data2[\'status\'] =$status;
$newEmp_application = new Emp_application($data2);
$newEmp_application->save2();
echo "good";
//header("Location:forms-browse.php?id=$id&tnl%=$urf");
$u1="empappapp";
$url=encryptIt($u1);
print "<script>";
print " self.location=\'employees_list.php?tnl%=$url&idvar=4\';"; // Comment this line if you don\'t want to redirect
print "</script>";
}
if(isset($_POST[\'replay-j\'])) {
$file_size=$_FILES["file"]["size"];
$current_image=$_FILES[\'file\'][\'name\'];
$extension = substr(strrchr($current_image, \'.\'), 1);
$image = rand(1,99999).\'.\'.end($current_image).$extension;
$destination="uploads/joborders/".$image;
if($current_image=="")
$image="";
$data[\'id_job_orders\']=$id_job;
$data[\'id_user\'] =$id_user_on;
$data[\'status\'] =$_POST[\'status\'];
$data[\'notes\'] =$_POST[\'notes\'];
$data[\'file\']=$image; //encrypt the password for storage
$action = copy($_FILES[\'file\'][\'tmp_name\'], $destination);
$newjob_orders_details = new job_orders_details($data);
$newjob_orders_details->save(true);
$data2[\'id\'] =$id_job;
$data2[\'status\'] =$_POST[\'status\'];
$newJoborders = new Joborders($data2);
$newJoborders->save_d();
print "<script>";
print " self.location=\'forms-browse.php?id=$id_var&tnl%=$urf\';"; // Comment this line if you don\'t want to redirect
print "</script>";
}
if(isset($_POST[\'close-j\'])) {
$file_size=$_FILES["file"]["size"];
$current_image=$_FILES[\'file\'][\'name\'];
$extension = substr(strrchr($current_image, \'.\'), 1);
$image = rand(1,99999).\'.\'.end($current_image).$extension;
$destination="uploads/joborders/".$image;
if($current_image=="")
$image="";
$data2[\'id\'] =$id_job;
$data2[\'status\'] ="24";
$data2[\'eva\'] =$_POST[\'eva\'];
$newJoborders = new Joborders($data2);
$newJoborders->save_c();
print "<script>";
print " self.location=\'forms-browse.php?id=$id_var&tnl%=$urf\';"; // Comment this line if you don\'t want to redirect
print "</script>";
}
if(isset($_POST[\'start-job\'])) {
$status="19";
$data2[\'id\'] =$id_job;
$data2[\'status\'] ="19";
$newJoborders = new Joborders($data2);
$newJoborders->save_p();
print "<script>";
print " self.location=\'forms-browse.php?id=$id_var&tnl%=$urf\';"; // Comment this line if you don\'t want to redirect
print "</script>";
}
?>
<div class="col-md-8">
<div class="progress progress-striped progress-bar-large active">
<div class="progress-bar progress-bar-<?=$status_css?>" style="width: <?=$status_bar?>%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="60" role="progressbar">
<span class="sr-only">60% Complete (warning)</span>
<center><?=$status_name?> <?=$date_status;?></center>
</div>
</div>
</div>
<div class="col-md-2">
<input id="input-2c" value="<?=$eva;?>" class="rating" min="0" max="5" step="0.5" data-size="sm"
data-symbol="" data-glyphicon="false" data-rating-class="rating-fa" >
</div>
<?
$frm = new HTML_Form();
$frmStr = $frm->startForm(\'\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\', \'onsubmit\'=>\'return checkBeforeSubmit(this)\',\'enctype\'=>\'multipart/form-data\') ) . PHP_EOL .
///////////////////////////////////////////////////////////
$frm->startDiv(\'row\') .
$frm->startDiv(\'col-md-10\') .
$frm->startDiv(\'panel\') .
$frm->startDiv(\'panel-header panel-controls no-print\') .
$frm->startDiv(\'timeline-content\') .
$frm->startDiv(\'pull-right\') .
$frm->startDiv(\'pull-left\') .
$frm->startDiv2(\'timeline-day\',\'\') .
$frm->endDiv().
$frm->startDiv(\'pull-left\') .
$frm->startDiv2(\'timeline-day\',\'\') .
$frm->endDiv().
$frm->startDiv2(\'timeline-month c-gray\',$datetime) .
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->startDiv(\'form-group\') .
$frm->startDiv(\'panel-content\') .
//*row*//1
$frm->startDiv(\'row m-t-10\') .
$frm->startDiv(\'col-md-3\') .
$frm->startHh(\'h5\',\'pull-left\',\' عنوان امر العمل :\'.$title_j) .
$frm->startDiv2(\'timeline-day\',\'\') .
$frm->endH(\'h5\') .
$frm->endDiv().
$frm->startDiv(\'col-md-2\') .
$frm->startHh(\'h5\',\'pull-left\',\' تاريخ بداية العمل : \'.$s_date) .
$frm->endH(\'h5\') .
$frm->endDiv().
$frm->startDiv(\'col-md-2\') .
$frm->startHh(\'h5\',\'pull-left\',\' تاريخ نهايه العمل : \'.$e_date) .
$frm->endDiv() . PHP_EOL .// End col-md
$frm->startDiv(\'col-md-2\') .
$frm->startHh(\'h5\',\'pull-left\',\' مصدر امر العمل : \'.$name_userr) .
$frm->endDiv() . PHP_EOL .// End col-md
$frm->startDiv(\'col-md-2\') .
$frm->startHh(\'h5\',\'pull-left\',\' الموظف : \'.$name_employee) .
$frm->startDiv2(\'timeline-day\',\'\') .
$frm->endH(\'h5\') .
$frm->endDiv().
$frm->endDiv().
$frm->startDiv(\'row m-t-10\') .
//column#1
//column#2
$frm->startDiv(\'col-md-3\') .
$frm->startHh(\'h5\',\'pull-left\',\' عنوان فاتوره : \'.$title_ord) .
$frm->startDiv2(\'timeline-day\',\'\') .
$frm->endH(\'h5\') .
$frm->endDiv().
$frm->startDiv(\'col-md-2\') .
$frm->startHh(\'h5\',\'pull-left\',\' رقم الفاتوره : \'.$id_req) .
$frm->startDiv2(\'timeline-day\',\'\') .
$frm->endH(\'h5\') .
$frm->endDiv().
$frm->startDiv(\'col-md-2\') .
$frm->startHh(\'h5\',\'pull-left\',\' اسم العميل : \'.$name_client) .
$frm->endH(\'h5\') .
$frm->endDiv().
$frm->startDiv(\'col-md-2\') .
$frm->startHh(\'h5\',\'pull-left\',\' تاريخ تسليم العمل : \'.$e_date_c) .
$frm->endDiv() . PHP_EOL .// End col-md
$frm->startDiv(\'col-md-3\') .
$frm->addInput(\'submit\', \'start-job\', \'بدأ العمل\'.$date_pend, array(\'class\'=>\'btn btn-embossed btn-warning\',$j_p=>$j_p)) .
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->startDiv(\'col-md-12\') .
$frm->addLabelFor(\'firstName\',\'التفاصيل\') .
$frm->startP(\'p\',$notes).
$frm->endTag(\'/p\').
$frm->endDiv().
$frm->startDiv(\'pull-right\') .
$frm->startDiv(\'pull-left\') .
$frm->startDiv2(\'timeline-day\',\'\') .
$frm->endDiv().
$frm->startDiv(\'pull-left\') .
$frm->startDiv2(\'timeline-day\',$edit2) .
$frm->endDiv().
$frm->img_href(\'uploads/joborders/\',$file_j,$name_file,$disabled1) .
$frm->startI(\'icon-cloud-upload\') .
$frm->endI() .
$frm->endTag(\'/button\').
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->startDiv(\'row m-t-10\') .
//column#3
//column#3
//column#3
$frm->endDiv().
///////////////////////NEW PANEL///////////////////////////////////////////////////////////////
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
////////////////
//////////////
$frm->endForm();
// finally, output the long string
echo $frmStr;
$sql= mysql_query("select * from job_orders_details where id_job_orders=\'$id_var\' ORDER BY Id ASC ") or die("MySQL Login Error: ".mysql_error());
$frm = new HTML_Form();
$frmStr = $frm->startForm(\'\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\', \'onsubmit\'=>\'return checkBeforeSubmit(this)\',\'enctype\'=>\'multipart/form-data\') ) . PHP_EOL .
$frm->startDiv(\'row\') .
$frm->startDiv(\'col-lg-12\') .
$frm->startSection(\'timeline\') .
$frm->endForm();
// finally, output the long string
echo $frmStr;
while($rows = mysql_fetch_array($sql)) {
$notes=$rows[\'notes\'];
$name_user=NameRow1($rows[\'id_user\'],"login","name");
$name_emp=NameRow1($rows[\'id_emp\'],"login","name");
$n_status=NameRow1($rows[\'status\'],"sysstatus","name");
$css_status=NameRow1($rows[\'status\'],"sysstatus","css");
$datetime=$rows[\'datetime\'];
$file=$rows[\'file\'];
$disabled="";
$name_file="الملف المرفق";
if($file=="")
$disabled="disabled";
if($file=="")
$name_file="لايوجد مرفقات";
$frm = new HTML_Form();
$frmStr = $frm->startForm(\'\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\', \'onsubmit\'=>\'return checkBeforeSubmit(this)\',\'enctype\'=>\'multipart/form-data\') ) . PHP_EOL .
$frm->startDiv(\'timeline-block\') .
$frm->iconyellow($css_status) .
$frm->startI(\'\') .
$frm->endI() .
$frm->endDiv().
$frm->startDiv(\'timeline-content\') .
$frm->startDiv(\'timeline-heading clearfix\') .
$frm->startHh(\'h5\',\'pull-left\',\'صحاب الرد /\') .
$frm->startDiv2(\'timeline-day\',$name_user) .
$frm->endH(\'h5\') .
$frm->startDiv(\'pull-right\') .
$frm->startDiv(\'pull-left\') .
$frm->startDiv2(\'timeline-day\',\'\') .
$frm->endDiv().
$frm->startDiv(\'pull-left\') .
$frm->startDiv2(\'timeline-day\',\'\') .
$frm->endDiv().
$frm->startDiv2(\'timeline-month c-gray\',$datetime) .
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->startDiv(\'col-md-12\') .
$frm->startP(\'p\',$notes).
$frm->endTag(\'/p\').
$frm->endDiv().
$frm->startDiv(\'pull-right\') .
$frm->startDiv(\'pull-left\') .
$frm->startDiv2(\'timeline-day\',\'\') .
$frm->endDiv().
$frm->startDiv(\'pull-left\') .
$frm->startDiv2(\'timeline-day\',$edit2) .
$frm->endDiv().
$frm->img_href(\'uploads/requests/\',$file,$name_file,$disabled) .
$frm->startI(\'icon-cloud-upload\') .
$frm->endI() .
$frm->endTag(\'/button\').
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->startDiv(\'timeline-heading clearfix\') .
$frm->startHh(\'h5\',\'pull-left\',\'\') .
$frm->startDiv2(\'panel-footer bg-\'.$css_status,$n_status) .
$frm->endH(\'h5\') .
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->endDiv().
$frm->endForm();
// finally, output the long string
echo $frmStr;
}
if($status_j!="24"&$id_userr==$id_user_on or $id_group_s=="13" ){
if($status_j!="24"&$id_empp==$id_user_on){
$frm = new HTML_Form();
$frmStr5 = $frm->startForm(\'\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\', \'onsubmit\'=>\'return checkBeforeSubmit(this)\',\'enctype\'=>\'multipart/form-data\') ) . PHP_EOL .
$frm->startDiv(\'timeline-content\') .
$frm->startDiv(\'timeline-heading clearfix\') .
$frm->startHh(\'h2\',\'pull-left\',\'\') .
$frm->endH(\'h2\') .
$frm->addInput(\'button\' ,\'replay-j\', \'اضافه رد\', array(\'data-target\'=>\'#test_r2\',\'class\'=>\'morphbutton btn btn-embossed btn-info\') ) .
$frm->addInput(\'button\', \'replay-j\', \'اضافه رد\', array(\'data-target\'=>\'#test_r\',\'class\'=>\'morphbutton btn btn-embossed btn-success\') ) .
$frm->addInput(\'button\', \'close-j\', \'اغلاق امر العمل\', array(\'data-target\'=>\'#test_r3\',\'class\'=>\'morphbutton btn btn-embossed btn-danger\') ) .
$frm->endDiv().
$frm->endDiv().
$frm->endSection().
$frm->endDiv().
$frm->endDiv().
$frm->endForm();
// finally, output the long string
echo $frmStr5;
}else{
$frm = new HTML_Form();
$frmStr5 = $frm->startForm(\'\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\', \'onsubmit\'=>\'return checkBeforeSubmit(this)\',\'enctype\'=>\'multipart/form-data\') ) . PHP_EOL .
$frm->startDiv(\'timeline-content\') .
$frm->startDiv(\'timeline-heading clearfix\') .
$frm->startHh(\'h2\',\'pull-left\',\'\') .
$frm->endH(\'h2\') .
$frm->addInput(\'button\' ,\'replay-j\', \'اضافه رد\', array(\'data-target\'=>\'#test_r2\',\'class\'=>\'morphbutton btn btn-embossed btn-info\') ) .
$frm->addInput(\'button\', \'close-j\', \'اغلاق امر العمل\', array(\'data-target\'=>\'#test_r3\',\'class\'=>\'morphbutton btn btn-embossed btn-danger\') ) .
$frm->endDiv().
$frm->endDiv().
$frm->endSection().
$frm->endDiv().
$frm->endDiv().
$frm->endForm();
// finally, output the long string
echo $frmStr5;
}
}
elseif($status_j!="24"&$id_empp==$id_user_on){
$frm = new HTML_Form();
$frmStr5 = $frm->startForm(\'\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\', \'onsubmit\'=>\'return checkBeforeSubmit(this)\',\'enctype\'=>\'multipart/form-data\') ) . PHP_EOL .
$frm->startDiv(\'timeline-content\') .
$frm->startDiv(\'timeline-heading clearfix\') .
$frm->startHh(\'h2\',\'pull-left\',\'\') .
$frm->endH(\'h2\') .
$frm->addInput(\'button\', \'replay-j\', \'اضافه رد\', array(\'data-target\'=>\'#test_r\',\'class\'=>\'morphbutton btn btn-embossed btn-success\') ) .
$frm->endDiv().
$frm->endDiv().
$frm->endSection().
$frm->endDiv().
$frm->endDiv().
$frm->endForm();
// finally, output the long string
echo $frmStr5;
}
elseif($status_j=="24"){
$frm = new HTML_Form();
$frmStr5 = $frm->startForm(\'\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\', \'onsubmit\'=>\'return checkBeforeSubmit(this)\',\'enctype\'=>\'multipart/form-data\') ) . PHP_EOL .
$frm->startDiv(\'timeline-content\') .
$frm->startDiv(\'timeline-heading clearfix\') .
$frm->startHh(\'h2\',\'pull-left\',\'\') .
$frm->endH(\'h2\') .
$frm->addInput(\'button\', \'refused-appapp\', \'تم اغلاق امر العمل\', array(\'class\'=>\'morphbutton btn btn-embossed btn-danger m-b-10 m-r-0\',\'disabled\'=>\'disabled\') ).
$frm->endDiv().
$frm->endDiv().
$frm->endSection().
$frm->endDiv().
$frm->endDiv().
$frm->endForm();
// finally, output the long string
echo $frmStr5;
}
$frm1 = new HTML_Form();
$frm1Str = $frm1->startForm3(\'#\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\',\'onsubmit\'=>\'return checkBeforeSubmit(this)\') ) . PHP_EOL .
$frm1->startDiv(\'morphbutton-content\', array(\'id\'=>\'test_r\')) .
$frm1->startDiv(\'"box\') .
$frm1->startcss(\'button\', array(\'class\'=>\'morphbutton-close\') ) .
$frm1->startcss(\'span\', array(\'class\'=>\'morphbutton-close\') ) .
$frm1->startcss(\'span\', array(\'class\'=>\'glyphicon glyphicon-remove\') ) .
$frm1->endcss(\'span\', array(\'class\'=>\'glyphicon glyphicon-remove\') ) .
$frm1->endcss(\'span\') .
$frm1->endcss(\'button\') .
$frm1->startDiv(\'form-group\') .
$frm1->panel(\'\') .
$frm1->startDiv(\'panel-content\') .
$frm1->startH(\'h3\',\'اضافه رد\') .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
//*row*//1
$frm1->startDiv(\'panel-content\') .
$frm1->startDiv(\'row m-t-10\') .
$frm1->startDiv(\'col-md-6\') .
$frm1->addLabelFor(\'firstName\',\'اختار الحالة\') .
$frm->addSelectList5(\'status\',\'sysstatus\',\'name\',\'Id\',\'cat\',\'1\',\'form-control\',array(\'id\'=>\'parent_cat\')) .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->startDiv(\'row m-t-10\') .
$frm1->startDiv(\'col-md-6\') .
$frm1->addLabelFor(\'firstName\',\'تفاصيل\') .
$frm->addTextarea(\'notes\',\'\',array(\'class\'=>\'form-control\') ) .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->startDiv(\'row m-t-10\') .
//column#1
$frm1->startDiv(\'col-md-12\') .
$frm1->addLabelFor(\'firstName\',\'الملف المرفق\') .
$frm->addInput(\'file\',\'file\',$file, array(\'id\'=>\'firstName\', \'class\'=>\'form-control\') ) .
$frm1->endDiv() . PHP_EOL .// End col-md
//column#2
$frm1->endDiv() . PHP_EOL .// End col-md
$frm->addEmptyTag(\'br\') . PHP_EOL .
$frm1->addInput(\'submit\', \'replay-j\', \'اضافه الرد\', array(\'class\'=>\'btn btn-embossed btn-success\')) .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endForm();
// finally, output the long string
echo $frm1Str;
//////////////////////////////////////
$frm1 = new HTML_Form();
$frm1Str = $frm1->startForm3(\'#\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\',\'onsubmit\'=>\'return checkBeforeSubmit(this)\') ) . PHP_EOL .
$frm1->startDiv(\'morphbutton-content\', array(\'id\'=>\'test_r2\')) .
$frm1->startDiv(\'"box\') .
$frm1->startcss(\'button\', array(\'class\'=>\'morphbutton-close\') ) .
$frm1->startcss(\'span\', array(\'class\'=>\'morphbutton-close\') ) .
$frm1->startcss(\'span\', array(\'class\'=>\'glyphicon glyphicon-remove\') ) .
$frm1->endcss(\'span\', array(\'class\'=>\'glyphicon glyphicon-remove\') ) .
$frm1->endcss(\'span\') .
$frm1->endcss(\'button\') .
$frm1->startDiv(\'form-group\') .
$frm1->panel(\'\') .
$frm1->startDiv(\'panel-content\') .
$frm1->startH(\'h3\',\'اضافه رد\') .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
//*row*//1
$frm1->startDiv(\'panel-content\') .
$frm1->startDiv(\'row m-t-10\') .
$frm1->startDiv(\'col-md-6\') .
$frm1->addLabelFor(\'firstName\',\'اختار الحالة\') .
$frm->addSelectList5(\'status\',\'sysstatus\',\'name\',\'Id\',\'cat\',\'2\',\'form-control\',array(\'id\'=>\'parent_cat\')) .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->startDiv(\'row m-t-10\') .
$frm1->startDiv(\'col-md-6\') .
$frm1->addLabelFor(\'firstName\',\'تفاصيل\') .
$frm->addTextarea(\'notes\',\'\',array(\'class\'=>\'form-control\') ) .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->startDiv(\'row m-t-10\') .
//column#1
$frm1->startDiv(\'col-md-12\') .
$frm1->addLabelFor(\'firstName\',\'الملف المرفق\') .
$frm->addInput(\'file\',\'file\',$file, array(\'id\'=>\'firstName\', \'class\'=>\'form-control\') ) .
$frm1->endDiv() . PHP_EOL .// End col-md
//column#2
$frm1->endDiv() . PHP_EOL .// End col-md
$frm->addEmptyTag(\'br\') . PHP_EOL .
$frm1->addInput(\'submit\', \'replay-j\', \'اضافه الرد\', array(\'class\'=>\'btn btn-embossed btn-success\')) .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endForm();
// finally, output the long string
echo $frm1Str;
/////////////////////////////////////////////////////////////////////////////////////////////////////////
$frm1 = new HTML_Form();
$frm1Str = $frm1->startForm3(\'#\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\',\'onsubmit\'=>\'return checkBeforeSubmit(this)\') ) . PHP_EOL .
$frm1->startDiv(\'morphbutton-content\', array(\'id\'=>\'test_r3\')) .
$frm1->startDiv(\'"box\') .
$frm1->startcss(\'button\', array(\'class\'=>\'morphbutton-close\') ) .
$frm1->startcss(\'span\', array(\'class\'=>\'morphbutton-close\') ) .
$frm1->startcss(\'span\', array(\'class\'=>\'glyphicon glyphicon-remove\') ) .
$frm1->endcss(\'span\', array(\'class\'=>\'glyphicon glyphicon-remove\') ) .
$frm1->endcss(\'span\') .
$frm1->endcss(\'button\') .
$frm1->startDiv(\'form-group\') .
$frm1->panel(\'\') .
$frm1->startDiv(\'panel-content\') .
$frm1->startH(\'h3\',\'اغلاق امر العمل\') .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
//*row*//1
$frm1->startDiv(\'panel-content\') .
$frm1->startDiv(\'row m-t-10\') .
$frm1->startDiv(\'col-md-5\') .
$frm1->addLabelFor(\'firstName\',\'تقدريك على مستوى العمل بنسبة مئوية\') .
$frm->addInput(\'text\',\'eva\',\'1\', array(\'id\'=>\'input-2c\',\'class\'=>\'rating\',\'min\'=>\'0\',\'max\'=>\'5\',\'step\'=>\'0.5\',\'data-size\'=>\'sm\',\'data-symbol\'=>\'\',\'data-glyphicon\'=>\'false\',\'data-rating-class\'=>\'rating-fa\') ) .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm->addEmptyTag(\'br\') . PHP_EOL .
$frm1->addInput(\'submit\', \'close-j\', \'اغلاق امر العمل\', array(\'class\'=>\'btn btn-embossed btn-danger\')) .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endForm();
// finally, output the long string
echo $frm1Str;
///////////////////////////////////////////////////////////////////////////////
$frm1 = new HTML_Form();
$frm1Str = $frm1->startForm(\'\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\', \'onsubmit\'=>\'return checkBeforeSubmit(this)\',\'enctype\'=>\'multipart/form-data\') ) . PHP_EOL .
$frm1->startDiv(\'morphbutton-content\', array(\'id\'=>\'test_to\')) .
$frm1->startDiv(\'"box\') .
$frm1->startcss(\'button\', array(\'class\'=>\'morphbutton-close\') ) .
$frm1->startcss(\'span\', array(\'class\'=>\'morphbutton-close\') ) .
$frm1->startcss(\'span\', array(\'class\'=>\'glyphicon glyphicon-remove\') ) .
$frm1->endcss(\'span\', array(\'class\'=>\'glyphicon glyphicon-remove\') ) .
$frm1->endcss(\'span\') .
$frm1->endcss(\'button\') .
$frm1->startDiv(\'form-group\') .
$frm1->panel(\'\') .
$frm1->startDiv(\'panel-content\') .
$frm1->startH(\'h3\',\'اعادة توجيه\') .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
//*row*//1
$frm1->startDiv(\'panel-content\') .
$frm->startDiv(\'row m-t-10\') .
$frm->startDiv(\'col-md-4\') .
$frm->startDiv(\'form-group\') .
$frm->addLabelFor(\'firstName\', \'الفرع\') .
$frm->addSelectList5(\'parent_cat\',\'category\',\'name\',\'Id\',\'sub\',\'0\',\'form-control\',array(\'id\'=>\'parent_cat\')) .
$frm->endDiv() . PHP_EOL .// End col-md
$frm->endDiv() . PHP_EOL .// End col-md
//column#2
$frm->startDiv(\'col-md-4\') .
$frm->startDiv(\'form-group\') .
$frm->addLabelFor(\'firstName\', \'القسم\') .
$frm->addSelectList5(\'sub_cat\',\'category\',\'name\',\'Id\',\'Id\',\'0\',\'form-control\',array(\'id\'=>\'sub_cat\')) .
$frm->endDiv() . PHP_EOL .// End col-md
$frm->endDiv() . PHP_EOL .// End col-md
//column#4
$frm->startDiv(\'col-md-4\') .
$frm->startDiv(\'form-group\') .
$frm->addLabelFor(\'firstName\', \'مدير القسم\',$print5cho) .
$frm->addSelectList5(\'id_emp\',\'category\',\'name\',\'Id\',\'Id\',\'0\',\'form-control\',array(\'id\'=>\'name_mang\')) .
$frm->endDiv() . PHP_EOL .// End col-md
$frm->endDiv().
//End row first
$frm->endDiv() . PHP_EOL .
//*row*//2
$frm1->startDiv(\'row m-t-10\') .
$frm1->startDiv(\'col-md-6\') .
$frm1->addLabelFor(\'firstName\',\'تفاصيل\') .
$frm1->addTextarea(\'notes\',\'\',array(\'class\'=>\'form-control\') ) .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->startDiv(\'row m-t-10\') .
//column#1
$frm1->startDiv(\'col-md-12\') .
$frm1->addLabelFor(\'firstName\',\'الملف المرفق\') .
$frm->addInput(\'file\',\'file\',$file, array(\'id\'=>\'firstName\', \'class\'=>\'form-control\') ) .
$frm1->endDiv() . PHP_EOL .// End col-md
//column#2
$frm1->endDiv() . PHP_EOL .// End col-md
$frm->addEmptyTag(\'br\') . PHP_EOL .
$frm1->addInput(\'submit\', \'agree-to\', \'ارسال\', array(\'class\'=>\'btn btn-embossed btn-success\')) .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endForm();
// finally, output the long string
echo $frm1Str;
$frm2 = new HTML_Form();
$frm2Str = $frm2->startForm(\'\', \'post\', \'form-control\',
array(\'class\'=>\'form-control form-white\', \'onsubmit\'=>\'return checkBeforeSubmit(this)\',\'enctype\'=>\'multipart/form-data\') ) . PHP_EOL .
$frm2->startDiv(\'morphbutton-content\', array(\'id\'=>\'test1\')) .
$frm2->startDiv(\'"box\') .
$frm2->startcss(\'button\', array(\'class\'=>\'morphbutton-close\') ) .
$frm2->startcss(\'span\', array(\'class\'=>\'morphbutton-close\') ) .
$frm2->startcss(\'span\', array(\'class\'=>\'glyphicon glyphicon-remove\') ) .
$frm2->endcss(\'span\', array(\'class\'=>\'glyphicon glyphicon-remove\') ) .
$frm2->endcss(\'span\') .
$frm2->endcss(\'button\') .
$frm1->startDiv(\'form-group\') .
$frm1->panel(\'\') .
$frm1->startDiv(\'panel-content\') .
$frm1->startH(\'h3\',\'سبب رفض الطلب\') .
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->endDiv() . PHP_EOL .// End col-md
$frm1->addEmptyTag(\'br\') . PHP_EOL .
$frm1->addEmptyTag(\'br\') . PHP_EOL .
//*row*//1
$frm1->startDiv(\'panel-content\') .
$frm2->startDiv(\'row m-t-10\') .
//column#1
$frm2->startDiv(\'col-md-6\') .
$frm2->addTextarea(\'refuse_notes\',\'\',array(\'class\'=>\'form-control\') ) .
$frm2->endDiv() . PHP_EOL .// End col-md
$frm2->endDiv() . PHP_EOL .// End col-md
$frm2->addEmptyTag(\'br\') . PHP_EOL .
$frm2->addInput(\'submit\', \'refused-form\', \'رفض الطلب\', array(\'id\'=>\'firstName\', \'class\'=>\'cancel btn btn-embossed btn-danger m-b-10 m-r-0\') ).
$frm2->endDiv() . PHP_EOL .// End col-md
$frm2->endDiv() . PHP_EOL .// End col-md
$frm2->endDiv() . PHP_EOL .// End col-md
$frm2->endDiv() . PHP_EOL .// End col-md
$frm2->endDiv() . PHP_EOL .// End col-md
$frm2->endForm();
// finally, output the long string
echo $frm2Str;
}
?>
<div id="buttons-preview" class="preview dis-none">
'
Did this file decode correctly?
Original Code
<?php eval("?>".base64_decode("PD9waHANCg0KaWYoJHVybF92YXI9PSdtZW1iZXJzJyl7DQogJHVybD0kX0dFVFsiaWQiXTsNCg0KDQoNCiAgICAgICAgICAgICRub3Rlcz1OYW1lUm93MygncnNjbGllbnRzJywnbm90ZXMnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAkbmFtZV9jbGllbnQ9TmFtZVJvdzMoJ3JzY2xpZW50cycsJ25hbWUnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAkbW9iaWxlPU5hbWVSb3czKCdyc2NsaWVudHMnLCdtb2JpbGUnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAkbW9iaWxlMj1OYW1lUm93MygncnNjbGllbnRzJywnbW9iaWxlMicsJHVybCwnSWQnKTsNCiAgICAgICAgICAgICRhZGRyZXNzPU5hbWVSb3czKCdyc2NsaWVudHMnLCdhZGRyZXNzJywkdXJsLCdJZCcpOw0KICAgICAgICAgICAgICRjb2RlPU5hbWVSb3czKCdyc2NsaWVudHMnLCdjb2RlJywkdXJsLCdJZCcpOw0KICAgICAgICAgICAgICRpZF9uYXQ9TmFtZVJvdzMoJ3JzY2xpZW50cycsJ2lkX25hdCcsJHVybCwnSWQnKTsNCg0KICAgICAgICAgICAgICRuYXRpbz1OYW1lUm93MygnbmF0aW9uYWxpdGllcycsJ25hbWUnLCRpZF9uYXQsJ0lkJyk7DQoNCiAgICAgICAgICAgICAkbmF0PU5hbWVSb3czKCdyc2NsaWVudHMnLCduYXQnLCR1cmwsJ0lkJyk7DQoNCiAgICAgICAgICAgICAkaWRfdHlwZV9uZXc9TmFtZVJvdzMoJ3JzY2xpZW50cycsJ3R5cGVfbmV3JywkdXJsLCdJZCcpOw0KDQogICAgICAgICAgICAgJHR5cGVfbmV3PU5hbWVSb3czKCd0eXBlX25ldycsJ25hbWUnLCRpZF90eXBlX25ldywnSWQnKTsNCg0KICAgICAgICAgICAgICRoZWlnaHQ9TmFtZVJvdzMoJ3JzY2xpZW50cycsJ2hlaWdodCcsJHVybCwnSWQnKTsNCiAgICAgICAgICAgICAkd2VpZ2h0PU5hbWVSb3czKCdyc2NsaWVudHMnLCd3ZWlnaHQnLCR1cmwsJ0lkJyk7DQogICAgICRpbWFnZT1OYW1lUm93MygncnNjbGllbnRzJywnaW1hZ2UnLCR1cmwsJ0lkJyk7DQoNCg0KICAgICAgICAgICAgJGNhdD1OYW1lUm93MygncnNjbGllbnRzJywnY2F0JywkdXJsLCdJZCcpOw0KICAgICAkZ2JzPU5hbWVSb3czKCdyc2NsaWVudHMnLCdnYnMnLCR1cmwsJ0lkJyk7DQogICAgICAgICAJJGFtb3VudD1OYW1lUm93MygnYWNjb3VudHMnLCdhbW91bnQnLCR1cmwsJ2lkX2NsaWVudCcpOw0KICAgICAgICAgCSRiYWxhbmNlPU5hbWVSb3czKCdhY2NvdW50cycsJ2JhbGFuY2UnLCR1cmwsJ2lkX2NsaWVudCcpOw0KICAgICAgICAgICAgICAgICAkdm91Y2hlcnM9Y291bnRfY29sNigkdXJsLCJ2b3VzY2hlcnMiLCJpZF9jbGllbnQiLCJhbW91bnQiKTsNCg0KPz4NCjxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+DQoJCQkJCTxhIGhyZWY9ImVkaXQucGhwP3RubCU9RHpncm9FWHVuTS9FUE5tU0pzOFZjMVhnVkVoRmZvSU1WWkl1L3dOaWpWaz0maWQ9PD89JHVybD8+IiBjbGFzcz0iYnRuIGJ0bi13YXJuaW5nIj4mIzE1Nzg7JiMxNTkzOyYjMTU4MzsmIzE2MTA7JiMxNjA0OyAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE2MDQ7JiMxNjAxOzwvYT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iY29sLW1kLTEyIj4NCjxhICBjbGFzcz0nYnRuIGJ0bi1lbWJvc3NlZCBidG4tc3VjY2VzcycgdGFyZ2V0PSJfYmxhbmsiICBocmVmPSJwcmludC5waHA/aWQ9PD89JHVybD8+JnRubCU9Y2FyZCIgPiYjMTU5MTsmIzE1NzY7JiMxNTc1OyYjMTU5MzsmIzE2MDc7IDwvYT4NCg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+DQo8YSAgY2xhc3M9J2J0biBidG4tZW1ib3NzZWQgYnRuLWJsdWUnICAgaHJlZj0iZm9ybXMucGhwP2ZuJT1KWkhYT2tZbnlLejRqdEZlWk5kaXdJZHB5d2l6dk1jTjAzc0twc0tmME4wPSZpZD08Pz0kdXJsOz8+IiA+JiMxNTc1OyYjMTU4OTsmIzE1ODM7JiMxNTc1OyYjMTU4NTsgJiMxNTc1OyYjMTU4ODsmIzE1Nzg7JiMxNTg1OyYjMTU3NTsmIzE2MDM7IDwvYT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iY29sLW1kLTYgcG9ydGxldHMgdWktc29ydGFibGUiPg0KDQogICAgICA8ZGl2IGNsYXNzPSJwYW5lbCI+DQogPGRpdiBjbGFzcz0icGFuZWwtY29udGVudCBzZi1za3kiPg0KDQoNCiAgICAgIDxkaXYgY2xhc3M9InJvdyBpbnZvaWNlLXBhZ2UiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIHAtdC0wIj4NCiAgICAgICAgDQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIj4NCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICANCgkJCQkJDQoJCQkJCSAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTYgbS10LTIwIG0tYi0yMCI+DQogICAgICAgICAgICAgICAgICAgICA8cD48aDM+PHN0cm9uZz4mIzE1NzU7JiMxNTg3OyYjMTYwNTsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNTkwOyYjMTYwODs6PC9zdHJvbmc+IDw/PSRuYW1lX2NsaWVudDs/PjwvaDM+PC9wPg0KDQogICAgICAgICAgICAgICAgICAgICA8cD48aDM+PHN0cm9uZz4mIzE1ODU7JiMxNjAyOyYjMTYwNTsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNTkwOyYjMTYwODs6PC9zdHJvbmc+IDw/PSR1cmw7Pz48L2gzPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgIDxwPjxoMz48c3Ryb25nPiYjMTU3NTsmIzE2MDQ7JiMxNjAzOyYjMTYwODsmIzE1ODM7Ojwvc3Ryb25nPiA8Pz0kY29kZTs/PjwvaDM+PC9wPg0KDQoNCiAgICAgICAgICAgICAgICAgICAgIDxwPjxoMz48c3Ryb25nPiYjMTU4NTsmIzE2MDI7JiMxNjA1OyAmIzE1NzU7JiMxNjA0OyYjMTU4MDsmIzE2MDg7JiMxNTc1OyYjMTYwNDsgOjwvc3Ryb25nPiA8Pz0kbW9iaWxlOz8+PC9oMz48L3A+DQogICAgICAgICAgICAgICAgICAgICA8cD48aDM+PHN0cm9uZz4mIzE1NzU7JiMxNjA0OyYjMTU4MDsmIzE2MDY7JiMxNTg3OyYjMTYxMDsmIzE2MDc7Ojwvc3Ryb25nPiA8Pz0kbmF0aW87Pz48L2gzPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgIDxwPjxoMz48c3Ryb25nPiYjMTU5MTsmIzE1ODU7JiMxNjEwOyYjMTYwMjsmIzE2MDc7ICYjMTU3NTsmIzE2MDQ7JiMxNTc4OyYjMTU5MzsmIzE1ODU7JiMxNjAxOyAmIzE1OTM7JiMxNjA0OyYjMTYwOTsgJiMxNTc1OyYjMTYwNDsmIzE2MDY7JiMxNTc1OyYjMTU4MzsmIzE2MTA7Ojwvc3Ryb25nPiA8Pz0kdHlwZV9uZXc7Pz48L2gzPjwvcD4NCiAgIA0KPC9kaXY+DQoNCgkJCQkJICAgICAgICAgICAgICANCiAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTYgbS10LTIwIG0tYi0yMCI+DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgPHA+PGgzPjxzdHJvbmc+JiMxNTc1OyYjMTYwNDsmIzE2MDc7JiMxNjA4OyYjMTYxMDsmIzE2MDc7Ojwvc3Ryb25nPiA8Pz0kbmF0Oz8+PC9oMz48L3A+DQogICAgICAgICAgICAgICAgICAgICA8cD48aDM+PHN0cm9uZz4mIzE1NzU7JiMxNjA0OyYjMTU5MTsmIzE2MDg7JiMxNjA0Ozo8L3N0cm9uZz4gPD89JGhlaWdodDs/PjwvaDM+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgPHA+PGgzPjxzdHJvbmc+JiMxNTc1OyYjMTYwNDsmIzE2MDg7JiMxNTg2OyYjMTYwNjs6PC9zdHJvbmc+IDw/PSR3ZWlnaHQ7Pz48L2gzPjwvcD4NCg0KICAgICAgICAgICAgICAgICAgICAgICA8cD48aDM+PHN0cm9uZz4mIzE1Nzg7JiMxNjAxOyYjMTU3NTsmIzE1ODk7JiMxNjEwOyYjMTYwNDsgJiMxNTkzOyYjMTYwNjsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNTkwOyYjMTYwODs6PC9zdHJvbmc+PC9oMz48L3A+ICAgDQo8ZGl2IGNsYXNzPSJ3ZWxsIGJnLXdoaXRlIj4NCiAgICAgICAgICAgICAgICAgICA8Pz0kbm90ZXM7Pz4gICAgICAgICAgICAgICAgICA8L2Rpdj4NCjwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KDQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9ImNvbC1tZC0zIHBvcnRsZXRzIHVpLXNvcnRhYmxlIj4NCiAgICAgIDxkaXYgY2xhc3M9InBhbmVsIj4NCiA8ZGl2IGNsYXNzPSJwYW5lbC1jb250ZW50IHNmLXNreSI+DQoNCg0KICAgICAgPGRpdiBjbGFzcz0icm93IGludm9pY2UtcGFnZSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIgcC10LTAiPg0KICAgICAgICANCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPg0KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgIA0KCQkJCQkNCgkJCQkJICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIgbS10LTIwIG0tYi0yMCI+DQoNCiAgICAgICAgICAgICAgICA8cD48aDM+PHN0cm9uZz4mIzE1NzU7JiMxNTgwOyYjMTYwNTsmIzE1NzU7JiMxNjA0OyYjMTYxMDsgICYjMTU3NTsmIzE2MDQ7JiMxNTc1OyYjMTU4ODsmIzE1Nzg7JiMxNTg1OyYjMTU3NTsmIzE2MDM7JiMxNTc1OyYjMTU3ODs6PC9zdHJvbmc+IDw/PSRhbW91bnQ7Pz4gPC9oMz48L3A+DQoNCiAgICAgICAgICAgICAgICAgICAgIDxwPjxoMz48c3Ryb25nPiYjMTU3NTsmIzE1ODA7JiMxNjA1OyYjMTU3NTsmIzE2MDQ7JiMxNjEwOyAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE1ODM7JiMxNjAxOyYjMTYwODsmIzE1OTM7Ojwvc3Ryb25nPiAgPD89JHZvdWNoZXJzOz8+PC9oMz48L3A+DQogICAgICAgICAgICAgICAgICAgICA8cD48aDM+PHN0cm9uZz4mIzE1NzU7JiMxNjA0OyYjMTU4NTsmIzE1ODk7JiMxNjEwOyYjMTU4Mzs6PC9zdHJvbmc+ICA8Pz0kYmFsYW5jZTs/PjwvaDM+PC9wPg0KPC9icj48L2JyPjwvYnI+DQoNCjwvYnI+PC9icj4NCg0KDQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQoNCiAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQoNCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImNvbC1tZC0zIHBvcnRsZXRzIHVpLXNvcnRhYmxlIj4NCiAgICAgIDxkaXYgY2xhc3M9InBhbmVsIj4NCiA8ZGl2IGNsYXNzPSJwYW5lbC1jb250ZW50IHNmLXNreSI+DQoNCg0KICAgICAgPGRpdiBjbGFzcz0icm93IGludm9pY2UtcGFnZSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIgcC10LTAiPg0KICAgICAgICANCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPg0KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgIA0KCQkJCQkNCgkJCQkJICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIgbS10LTIwIG0tYi0yMCI+DQoNCiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9InVwbG9hZHMvcHJvZi88Pz0kaW1hZ2U7Pz4iIHdpZHRoPSIzNTBweCIgY2xhc3M9ImltZy1yZXNwb25zaXZlMCIgPg0KDQoJCQkJCTxhIGhyZWY9ImZvcm1zLWJyb3dzZS5waHA/dG5sJT1Eemdyb0VYdW5NL0VQTm1TSnM4VmMxWGdWRWhGZm9JTVZaSXUvd05palZrPSZpZD08Pz0kdXJsPz4iIGNsYXNzPSJidG4gYnRuLWluZm8iPiYjMTU3ODsmIzE1ODE7JiMxNTgzOyYjMTYxMDsmIzE1Nzk7ICYjMTU4OTsmIzE2MDg7JiMxNTg1OyYjMTU3NzsgJiMxNTc1OyYjMTYwNDsmIzE1NzY7JiMxNTg1OyYjMTYwODsmIzE2MDE7JiMxNTc2OyYjMTYwNDs8L2E+DQoNCg0KDQoNCg0KDQoNCg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KDQogICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KDQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9ImNvbC1tZC0xMiBwb3J0bGV0cyB1aS1zb3J0YWJsZSI+DQo8ZGl2IGNsYXNzPSJwYW5lbCI+DQo8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkZXIgcGFuZWwtY29udHJvbHMiPg0KPGgzPg0KPGkgY2xhc3M9ImZhIGZhLXRhYmxlIj48L2k+DQo8c3Ryb25nPiYjMTU3NTsmIzE2MDQ7JiMxNTc1OyYjMTU4ODsmIzE1Nzg7JiMxNTg1OyYjMTU3NTsmIzE2MDM7JiMxNTc1OyYjMTU3ODs8L3N0cm9uZz4NCg0KPC9oMz4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFuZWwtY29udGVudCI+DQo8dGFibGUgY2xhc3M9InRhYmxlIj4NCiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KDQogICAgICAgICAgICAgICA8dGggIGJnY29sb3I9IiNiZWMwYmIiPiYjMTU4NTsmIzE2MDI7JiMxNjA1OyAmIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE1ODg7JiMxNTc4OyYjMTU4NTsmIzE1NzU7JiMxNjAzOzwvdGg+DQogICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICA8dGggIGJnY29sb3I9IiNiZWMwYmIiPiYjMTU3NTsmIzE2MDQ7JiMxNTc2OyYjMTU3NTsmIzE2MDI7JiMxNTc3OzwvdGg+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggIGJnY29sb3I9IiNiZWMwYmIiPiYjMTU3NTsmIzE2MDQ7JiMxNTc1OyYjMTU4MDsmIzE2MDU7JiMxNTc1OyYjMTYwNDsmIzE2MTA7PC90aD4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgYmdjb2xvcj0iI2JlYzBiYiI+JiMxNTc4OyYjMTU3NTsmIzE1ODU7JiMxNjEwOyYjMTU4MjsgJiMxNTc1OyYjMTYwNDsmIzE1NzU7JiMxNTg4OyYjMTU3ODsmIzE1ODU7JiMxNTc1OyYjMTYwMzs8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgYmdjb2xvcj0iI2JlYzBiYiI+JiMxNTc4OyYjMTU3NTsmIzE1ODU7JiMxNjEwOyYjMTU4MjsgJiMxNTc2OyYjMTU4MzsmIzE1NzU7JiMxNjEwOyYjMTYwNzsgJiMxNTc1OyYjMTU4ODsmIzE1Nzg7JiMxNTg1OyYjMTU3NTsmIzE2MDM7PC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggIGJnY29sb3I9IiNiZWMwYmIiPiYjMTU3ODsmIzE1NzU7JiMxNTg1OyYjMTYxMDsmIzE1ODI7ICYjMTU3NTsmIzE2MDY7JiMxNTc4OyYjMTYwNzsmIzE1NzU7JiMxNTY5OyAmIzE1NzU7JiMxNTg4OyYjMTU3ODsmIzE1ODU7JiMxNTc1OyYjMTYwMzs8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgYmdjb2xvcj0iI2JlYzBiYiI+JiMxNTgxOyYjMTU3NTsmIzE2MDQ7JiMxNjA3OyAmIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE1ODg7JiMxNTc4OyYjMTU4NTsmIzE1NzU7JiMxNjAzOzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1NzY7JiMxNTgzOyYjMTU3NTsmIzE2MTA7JiMxNjA3OyAmIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE1ODg7JiMxNTc4OyYjMTU4NTsmIzE1NzU7JiMxNjAzOzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1NzU7JiMxNjEwOyYjMTYwMjsmIzE1NzU7JiMxNjAxOzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1NzU7JiMxNjA0OyYjMTU4MTsmIzE1OTA7JiMxNjA4OyYjMTU4NTs8L3RoPg0KDQogICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4gDQogICAgICAgICAgIDx0Ym9keT4NCjw/DQoNCiAkYmc5OTk9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICB0a29yZGVycyB3aGVyZSBpZF9jbGllbnQ9JyR1cmwnIikgb3IgZGllKCJNeVNRTCBMb2dpbiBFcnJvcjogIi5teXNxbF9lcnJvcigpKTsNCg0KICAgICAgd2hpbGUoJHJvd3MgPSBteXNxbF9mZXRjaF9hcnJheSgkYmc5OTkpKQ0KICAgICAgICB7DQoNCgkJICANCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRyb3dzWydzdGF0dXMnXT09JzEnKQ0KCQkJCQkJCQkJCSAgJENTUz0id2FybmluZyI7DQoJCQkJCQkJCQkgICAgICAgaWYoJHJvd3NbJ3N0YXR1cyddPT0nMycpDQoJCQkJCQkJCQkJICAgJENTUz0iZGFuZ2VyIjsNCgkJCQkJCQkJCSAgICAgICBpZigkcm93c1snc3RhdHVzJ109PScyJykNCgkJCQkJCQkJCQkgICAkQ1NTPSJzdWNjZXNzIjsNCgkJCQkJCQkJCSAgICAgICBpZigkcm93c1snc3RhdHVzJ109PSc0JykNCgkJCQkJCQkJCQkgICAkQ1NTPSJkYXJrIjsNCgkJCQkJCQkJCQkgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9Ijw/ZWNobyAkQ1NTOz8+Ij4NCg0KPHRkPjxhIGhyZWY9ImZvcm1zLWJyb3dzZS5waHA/aWQ9PD89JHJvd3NbJ0lkJ10/PiZ0bmwlPXh6c1BiY2hSTnZLOVhpWmJDcGlUSjZqSmNwb2pZNENaNUlCWkdhTzJIR3c9IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij4wPD9lY2hvICRyb3dzWydJZCddOz8+PC9hPjwvdGQ+IA0KPHRkPjw/ZWNobyBOYW1lUm93KCRyb3dzWydpZF9zZXJ2aWNlJ10sInBsYW5zIik7Pz48L3RkPg0KDQo8dGQ+PD9lY2hvICRyb3dzWyd0b3RhbCddOz8+PC90ZD4JCQ0KDQo8dGQ+PD9lY2hvICRyb3dzWydkYXRldGltZSddOz8+PC90ZD4JDQo8dGQ+PD9lY2hvICRyb3dzWydzX2RhdGUnXTs/PjwvdGQ+CQ0KPHRkPjw/ZWNobyAkcm93c1snZV9kYXRlJ107Pz48L3RkPgkNCjx0ZD48P2VjaG8gTmFtZVJvdygkcm93c1snc3RhdHVzJ10sInN5c3N0YXR1cyIpOz8+PC90ZD4NCjx0ZD4gICAgDQo8P3BocCBpZigkcm93c1snc3RhcnQnXT09IiIpew0KICAgICAgICA/Pg0KIDxpbnB1dCB0eXBlPSJzdWJtaXQiICBuYW1lPSJsb2dfc2xpZGVyIiB2YWx1ZT0iJiMxNTc2OyYjMTU4MzsmIzE1Njk7ICYjMTU3NTsmIzE2MDQ7JiMxNTc1OyYjMTU4ODsmIzE1Nzg7JiMxNTg1OyYjMTU3NTsmIzE2MDM7IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij4NCjw/IH1lbHNlaWYoJHJvd3NbJ3N0YXJ0J10hPSIiKXs/Pg0KPD9lY2hvICRyb3dzWydzdGFydCddOz8+DQo8PyB9ZWxzZXs/Pg0KJiMxNTc1OyYjMTYwNDsmIzE1ODI7JiMxNTgzOyYjMTYwNTsmIzE2MDc7ICYjMTU5MzsmIzE2MTA7JiMxNTg1OyAmIzE2MDU7JiMxNTc4OyYjMTU3NTsmIzE1ODE7JiMxNjA3Ow0KDQogPD8gfT8+DQoNCg0KPC90ZD4NCjx0ZD4NCg0KICAgIDw/cGhwIGlmKCRyb3dzWydzdGF0dXMnXT09IjIiICl7DQogICAgICAgID8+DQogPGlucHV0IHR5cGU9InN1Ym1pdCIgIG5hbWU9ImxvZ19zbGlkZXIiIHZhbHVlPSImIzE1Nzg7JiMxNTkzOyYjMTU5MTsmIzE2MTA7JiMxNjA0OyIgY2xhc3M9ImJ0biBidG4tZGFuZ2VyIj4NCjw/IH1lbHNlaWYoJHJvd3NbJ3N0YXR1cyddPT0iMyIpez8+DQogPGlucHV0IHR5cGU9InN1Ym1pdCIgIG5hbWU9ImxvZ19zbGlkZXIiIHZhbHVlPSImIzE1Nzg7JiMxNjAxOyYjMTU5MzsmIzE2MTA7JiMxNjA0OyIgY2xhc3M9ImJ0biBidG4tc3VjY2VzcyI+DQo8PyB9ZWxzZXs/Pg0KJiMxNTc1OyYjMTYwNDsmIzE1ODI7JiMxNTgzOyYjMTYwNTsmIzE2MDc7ICYjMTU5NDsmIzE2MTA7JiMxNTg1OyAmIzE2MDU7JiMxNTc4OyYjMTU3NTsmIzE1ODE7JiMxNjA3Ow0KDQogPD8gfT8+DQo8L3RkPg0KPHRkPg0KDQogICAgPD9waHAgaWYoJHJvd3NbJ3N0YXR1cyddPT0iMiIgKXsNCiAgICAgICAgPz4NCiA8aW5wdXQgdHlwZT0ic3VibWl0IiAgbmFtZT0ibG9nX3NsaWRlciIgdmFsdWU9IiYjMTU4MTsmIzE1OTA7JiMxNjA4OyYjMTU4NTsiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPg0KPD8gfWVsc2V7Pz4NCiYjMTU3NTsmIzE2MDQ7JiMxNTgyOyYjMTU4MzsmIzE2MDU7JiMxNjA3OyAmIzE1OTQ7JiMxNjEwOyYjMTU4NTsgJiMxNjA1OyYjMTU3ODsmIzE1NzU7JiMxNTgxOyYjMTYwNzsNCg0KIDw/IH0/Pg0KPC90ZD4NCjwvdHI+DQogICAgDQogICAgICA8P30/Pg0KICAgICANCiAgICAgIDwvdGJvZHk+DQogICAgICA8L3RhYmxlPg0KPC9kaXY+DQoNCg0KDQoNCiA8L2Rpdj4NCiA8L2Rpdj4NCjw/DQp9DQppZigkdXJsX3Zhcj09J3JzY2xpZW50cycpew0KDQogJHVybD0kX0dFVFsiaWQiXTsNCg0KDQoNCiAgICAgICAgICAgICRub3Rlcz1OYW1lUm93MygncnNjbGllbnRzJywnbm90ZXMnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAkbmFtZV9jbGllbnQ9TmFtZVJvdzMoJ3JzY2xpZW50cycsJ25hbWUnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAkbW9iaWxlPU5hbWVSb3czKCdyc2NsaWVudHMnLCdtb2JpbGUnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAkbW9iaWxlMj1OYW1lUm93MygncnNjbGllbnRzJywnbW9iaWxlMicsJHVybCwnSWQnKTsNCiAgICAgICAgICAgICRhZGRyZXNzPU5hbWVSb3czKCdyc2NsaWVudHMnLCdhZGRyZXNzJywkdXJsLCdJZCcpOw0KICAgICAgICAgICAgICRjb2RlPU5hbWVSb3czKCdyc2NsaWVudHMnLCdjb2RlJywkdXJsLCdJZCcpOw0KICAgICAgICAgICAgICRpZF9uYXQ9TmFtZVJvdzMoJ3JzY2xpZW50cycsJ2lkX25hdCcsJHVybCwnSWQnKTsNCiAgICAgICAgICAgICAkbmF0aW89TmFtZVJvdzMoJ3JzY2xpZW50cycsJ25hdGlvbmFsaXRpZXMnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAgJG5hdD1OYW1lUm93MygncnNjbGllbnRzJywnbmF0JywkdXJsLCdJZCcpOw0KICAgICAgICAgICAgICRoZWlnaHQ9TmFtZVJvdzMoJ3JzY2xpZW50cycsJ2hlaWdodCcsJHVybCwnSWQnKTsNCiAgICAgICAgICAgICAkd2VpZ2h0PU5hbWVSb3czKCdyc2NsaWVudHMnLCdoZWlnaHQnLCR1cmwsJ0lkJyk7DQogICAgICRpbWFnZT1OYW1lUm93MygncnNjbGllbnRzJywnaW1hZ2UnLCR1cmwsJ0lkJyk7DQoNCiAgICAgICAgICAgICRjYXQ9TmFtZVJvdzMoJ3JzY2xpZW50cycsJ2NhdCcsJHVybCwnSWQnKTsNCiAgICAgJGdicz1OYW1lUm93MygncnNjbGllbnRzJywnZ2JzJywkdXJsLCdJZCcpOw0KPz4NCiAgICAgIDxkaXYgY2xhc3M9InBhbmVsIj4NCiA8ZGl2IGNsYXNzPSJwYW5lbC1jb250ZW50IHNmLXNreSI+DQoNCg0KICAgICAgPGRpdiBjbGFzcz0icm93IGludm9pY2UtcGFnZSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIgcC10LTAiPg0KICAgICAgICANCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPg0KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgIA0KCQkJCQkNCg0KCQkJCQkgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC02IG0tdC0yMCBtLWItMjAiPg0KDQoJCQ0KCQkJCQk8YSBocmVmPSJmb3Jtcy1icm93c2UucGhwP3RubCU9WVNBYVhoT3l5Znpyb2VZMHRvUFA5cjBPa2RZR3VjUXZKd0MwSnBod0NrYz0maWQ9PD89JHVybD8+IiBjbGFzcz0iYnRuIGJ0bi1pbmZvIj4gICYjMTU4NTsmIzE1ODA7JiMxNjA4OyYjMTU5MzsgJiMxNTc1OyYjMTYwNDsmIzE1NzY7JiMxNTg1OyYjMTYwODsmIzE2MDE7JiMxNTc2OyYjMTYwNDs8L2E+DQoNCjxkaXYgY2xhc3M9ImNhbWNvbnRlbnQiPg0KCTx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5PSJhdXRvcGxheSIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIxNTAiPjwvdmlkZW8+DQoJPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjQ4MCI+IDwvY2FudmFzPg0KPC9kaXY+DQoNCjwhLS0gRm9udCBhd3NvbWUgaWNvbnMgdXNlZCBpbiBidXR0b25zIC0tPg0KPGRpdiBjbGFzcz0iY2FtYnV0dG9ucyIgc3R5bGU9Im1hcmdpbi10b3A6IDEwcHg7Ij4NCgk8YnV0dG9uIGlkPSJzbmFwIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGJ0bi1sZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4gPGkgY2xhc3M9ImZhIGZhLWNhbWVyYSI+PC9pPiAmIzE1NzU7JiMxNjA0OyYjMTU3ODsmIzE2MDI7JiMxNTkxOyAmIzE1NzU7JiMxNjA0OyYjMTU4OTsmIzE2MDg7JiMxNTg1OyYjMTYwNzsgPC9idXR0b24+DQoJPGJ1dHRvbiBpZD0icmVzZXQiIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQgYnRuLWxnIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPiA8aSBjbGFzcz0iZmEgZmEtY2FtZXJhIj48L2k+IFRha2UgbmV3IHBpY3R1cmUgPC9idXR0b24+DQoJPGJ1dHRvbiBpZD0idXBsb2FkIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGJ0bi1sZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4gPGkgY2xhc3M9ImZhIGZhLXNhdmUiPjwvaT4gU2F2ZSA8L2J1dHRvbj4NCg0KCTxzcGFuIGlkPSJ1cGxvYWRpbmciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+ICYjMTU4MTsmIzE2MDE7JiMxNTkyOyAmIzE1NzU7JiMxNjA0OyYjMTU4OTsmIzE2MDg7JiMxNTg1OyYjMTYwNzs8L3NwYW4+DQoJPHNwYW4gaWQ9InVwbG9hZGVkIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPiAmIzE1Nzg7JiMxNjA1OyAmIzE1NzU7JiMxNjA0OyYjMTU3ODsmIzE1ODE7JiMxNjA1OyYjMTYxMDsmIzE2MDQ7ICYjMTU3NjsmIzE2MDY7JiMxNTgwOyYjMTU3NTsmIzE1ODE7IDxhPiBSZXR1cm4gPC9hPiA8L3NwYW4+PC9kaXY+DQo8ZGl2IGlkPSJjYW1GZWVkYmFjayI+PC9kaXY+DQoNCjxzY3JpcHQ+Ly8gPCFbQ0RBVEFbDQpuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhID0gKG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgfHwgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSB8fCBuYXZpZ2F0b3IubW96R2V0VXNlck1lZGlhICk7IA0KaWYgKG5hdmlnYXRvci5nZXRVc2VyTWVkaWEpIHsNCgluYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKHsNCgkJdmlkZW86dHJ1ZSwNCgkJYXVkaW86ZmFsc2UNCgl9LA0KCWZ1bmN0aW9uKHN0cmVhbSkgeyAvKiBkby1zYXkgc29tZXRoaW5nICovIH0sDQoJZnVuY3Rpb24oZXJyb3IpIHsNCgkJYWxlcnQoJ1NvbWV0aGluZyB3ZW50IHdyb25nLiAoZXJyb3IgY29kZSAnICsgZXJyb3IuY29kZSArICcpJyk7DQoJCXJldHVybiBmYWxzZTsNCgl9KTsNCn0gZWxzZSB7DQoJYWxlcnQoIlNvcnJ5LCB0aGUgYnJvd3NlciB5b3UgYXJlIHVzaW5nIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgSFRNTDUgd2ViY2FtIEFQSSIpOw0KCXJldHVybiBmYWxzZTsgDQp9DQovLyBdXT48L3NjcmlwdD4NCg0KPHNjcmlwdD4vLyA8IVtDREFUQVsNCi8vIFB1dCBldmVudCBsaXN0ZW5lcnMgaW50byBwbGFjZQ0KCXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7DQoJCS8vIEdyYWIgZWxlbWVudHMsIGNyZWF0ZSBzZXR0aW5ncywgZXRjLg0KCQl2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpLA0KCQkJY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpLA0KCQkJdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSwNCgkJCXZpZGVvT2JqID0geyAidmlkZW8iOiB0cnVlIH0sDQoJCQlpbWFnZV9mb3JtYXQ9ICJqcGVnIiwNCgkJCWpwZWdfcXVhbGl0eT0gODUsDQoJCQllcnJCYWNrID0gZnVuY3Rpb24oZXJyb3IpIHsNCgkJCQljb25zb2xlLmxvZygiVmlkZW8gY2FwdHVyZSBlcnJvcjogIiwgZXJyb3IuY29kZSk7IA0KCQkJfTsNCg0KDQoJCS8vIFB1dCB2aWRlbyBsaXN0ZW5lcnMgaW50byBwbGFjZQ0KCQlpZihuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKSB7IC8vIFN0YW5kYXJkDQoJCQluYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKHZpZGVvT2JqLCBmdW5jdGlvbihzdHJlYW0pIHsNCgkJCQl2aWRlby5zcmMgPSBzdHJlYW07DQoJCQkJdmlkZW8ucGxheSgpOw0KCQkJCSQoIiNzbmFwIikuc2hvdygpOw0KCQkJfSwgZXJyQmFjayk7DQoJCX0gZWxzZSBpZihuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKSB7IC8vIFdlYktpdC1wcmVmaXhlZA0KCQkJbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh2aWRlb09iaiwgZnVuY3Rpb24oc3RyZWFtKXsNCgkJCQl2aWRlby5zcmMgPSB3aW5kb3cud2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChzdHJlYW0pOw0KCQkJCXZpZGVvLnBsYXkoKTsNCgkJCQkkKCIjc25hcCIpLnNob3coKTsNCgkJCX0sIGVyckJhY2spOw0KCQl9IGVsc2UgaWYobmF2aWdhdG9yLm1vekdldFVzZXJNZWRpYSkgeyAvLyBtb3otcHJlZml4ZWQNCgkJCW5hdmlnYXRvci5tb3pHZXRVc2VyTWVkaWEodmlkZW9PYmosIGZ1bmN0aW9uKHN0cmVhbSl7DQoJCQkJdmlkZW8uc3JjID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoc3RyZWFtKTsNCgkJCQl2aWRlby5wbGF5KCk7DQoJCQkJJCgiI3NuYXAiKS5zaG93KCk7DQoJCQl9LCBlcnJCYWNrKTsNCgkJfQ0KCQkvLyB2aWRlby5wbGF5KCk7ICAgICAgIHRoZXNlIDIgbGluZXMgbXVzdCBiZSByZXBlYXRlZCBhYm92ZSAzIHRpbWVzDQoJCS8vICQoIiNzbmFwIikuc2hvdygpOyAgcmF0aGVyIHRoYW4gaGVyZSBvbmNlLCB0byBrZWVwICJjYXB0dXJlIiBoaWRkZW4NCgkJLy8gICAgICAgICAgICAgICAgICAgICB1bnRpbCBhZnRlciB0aGUgd2ViY2FtIGhhcyBiZWVuIGFjdGl2YXRlZC4gIA0KDQoJCS8vIEdldC1TYXZlIFNuYXBzaG90IC0gaW1hZ2UgDQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbmFwIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsNCgkJCWNvbnRleHQuZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCA2NDAsIDQ4MCk7DQoJCQkvLyB0aGUgZmFkZSBvbmx5IHdvcmtzIG9uIGZpcmVmb3g/DQoJCQkkKCIjdmlkZW8iKS5mYWRlT3V0KCJzbG93Iik7DQoJCQkkKCIjY2FudmFzIikuZmFkZUluKCJzbG93Iik7DQoJCQkkKCIjc25hcCIpLmhpZGUoKTsNCgkJCSQoIiNyZXNldCIpLnNob3coKTsNCgkJCSQoIiN1cGxvYWQiKS5zaG93KCk7DQoJCX0pOw0KCQkvLyByZXNldCAtIGNsZWFyIC0gdG8gQ2FwdHVyZSBOZXcgUGhvdG8NCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsNCgkJCSQoIiN2aWRlbyIpLmZhZGVJbigic2xvdyIpOw0KCQkJJCgiI2NhbnZhcyIpLmZhZGVPdXQoInNsb3ciKTsNCgkJCSQoIiNzbmFwIikuc2hvdygpOw0KCQkJJCgiI3Jlc2V0IikuaGlkZSgpOw0KCQkJJCgiI3VwbG9hZCIpLmhpZGUoKTsNCgkJfSk7DQoJCS8vIFVwbG9hZCBpbWFnZSB0byBzZXZlciANCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVwbG9hZCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKXsNCgkJCXZhciBkYXRhVXJsID0gY2FudmFzLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsIDAuODUpOw0KCQkJJCgiI3VwbG9hZGluZyIpLnNob3coKTsNCgkJCSQuYWpheCh7DQoJCQkJdHlwZTogIlBPU1QiLA0KCQkJCXVybDogInNhdmVQaWN0dXJlLnBocD9pZD08P3BocCBlY2hvICR1cmw7ID8+IiwNCgkJCQlkYXRhOiB7IA0KCQkJCQlpbWdCYXNlNjQ6IGRhdGFVcmwNCgkJCQl9LA0KCQkJCXN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpew0KCQkJCQljb25zb2xlLmxvZyhkYXRhKTsNCgkJCQkJJCgnI2NhbUZlZWRiYWNrJykuaHRtbChkYXRhKTsNCgkJCQl9DQoJCQl9KS5kb25lKGZ1bmN0aW9uKG1zZykgew0KCQkJCWNvbnNvbGUubG9nKCJzYXZlZCIpOw0KCQkJCSQoIiN1cGxvYWRpbmciKS5oaWRlKCk7DQoJCQkJJCgiI3VwbG9hZGVkIikuc2hvdygpOw0KCQkJfSk7DQoJCX0pOw0KCX0sIGZhbHNlKTsNCi8vIF1dPjwvc2NyaXB0Pg0KDQoNCg0KDQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQoNCiAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQoNCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2Rpdj4NCiA8L2Rpdj4NCiA8L2Rpdj4NCjw/DQoNCn0NCg0KaWYoJHVybF92YXI9PSd0a29yZGVycycpew0KDQogJHVybD0kX0dFVFsiaWQiXTsNCg0KCSAgICAkdGl0bGU9TmFtZVJvdzMoJ3Rrb3JkZXJzJywndGl0bGUnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAkaWRfZHJpdmVyPU5hbWVSb3czKCd0a29yZGVycycsJ2lkX2RyaXZlcicsJHVybCwnSWQnKTsNCiAgICAgIA0KICAgICAgICAgICAgJGlkX2NsaWVudD1OYW1lUm93MygndGtvcmRlcnMnLCdpZF9jbGllbnQnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAkZG93bj1OYW1lUm93MygndGtvcmRlcnMnLCdkb3duJywkdXJsLCdJZCcpOw0KICAgICAgICAgICAgJG5hbWVfY2xpZW50PU5hbWVSb3czKCdyc2NsaWVudHMnLCduYW1lJywkaWRfY2xpZW50LCdJZCcpOw0KICAgICAgICAgICAgJGRhdGVfb3Jkcj1OYW1lUm93MygndGtvcmRlcnMnLCdkYXRldGltZScsJHVybCwnSWQnKTsNCiAgICAgICAgICAgICRub3Rlcz1OYW1lUm93MygndGtvcmRlcnMnLCdub3RzJywkdXJsLCdJZCcpOw0KICAgICAgICAgICAgJG1vYmlsZT1OYW1lUm93MygncnNjbGllbnRzJywnbW9iaWxlJywkaWRfY2xpZW50LCdJZCcpOw0KICAgICAgICAgICAgJG1vYmlsZTI9TmFtZVJvdzMoJ3JzY2xpZW50cycsJ21vYmlsZTInLCRpZF9jbGllbnQsJ0lkJyk7DQogICAgICAgICAgICAkYWRkcmVzcz1OYW1lUm93MygncnNjbGllbnRzJywnYWRkcmVzcycsJGlkX2NsaWVudCwnSWQnKTsNCiAgICAgICAgICAgICAgJGdicz1OYW1lUm93MygncnNjbGllbnRzJywnZ2JzJywkaWRfY2xpZW50LCdJZCcpOw0KICAgICAgICAgICAgICAkZV9kYXRlPU5hbWVSb3czKCd0a29yZGVycycsJ2VfZGF0ZScsJHVybCwnSWQnKTsNCiAgICAgICAgICAgICAgJHNfZGF0ZT1OYW1lUm93MygndGtvcmRlcnMnLCdzX2RhdGUnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAgICRzdGF0dXM9TmFtZVJvdzMoJ3Rrb3JkZXJzJywnc3RhdHVzJywkdXJsLCdJZCcpOw0KICAgICAgICAgICAgICAkc3RhcnQ9TmFtZVJvdzMoJ3Rrb3JkZXJzJywnc3RhcnQnLCR1cmwsJ0lkJyk7DQogICAgICAgICAgICAgICRkdXI9TmFtZVJvdzMoJ3Rrb3JkZXJzJywnZGF5cycsJHVybCwnSWQnKTsNCg0KICAgICAkaW1hZ2U9TmFtZVJvdzMoJ3JzY2xpZW50cycsJ2ltYWdlJywkaWRfY2xpZW50LCdJZCcpOw0KJGNvdW50X2F0dGVudD1jb3VudF9jb2w0KCJhdHRlbmQiLCJpZF9vcmRlciIsJHVybCk7DQokYWJzX2F0dGVudD1jb3VudF9jb2w0KCJhYnMiLCJpZF9vcmRlciIsJHVybCk7DQoNCiRuYW1lX3N0YXR1cz1OYW1lUm93MSgkc3RhdHVzLCJzeXNzdGF0dXMiLCJuYW1lIik7IA0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAJJGRheV9sYXN0PU5hbWVSb3czKCdhYnMnLCdkYXlzJywkdXJsLCdpZF9vcmRlcicpOw0KICAgICAgICAgICAgICAgICAgICAgIAkkZGF0ZV9sYXN0PU5hbWVSb3czKCdhYnMnLCdkYXRlJywkdXJsLCdpZF9vcmRlcicpOw0KDQogICAkc19kYXRlMjI9ZGF0ZSgnZC1tLVknLCBzdHJ0b3RpbWUoJGRhdGVfbGFzdC4iKyIuJGRheV9sYXN0LiJkYXlzIikpOw0KIA0KPz4NCiAgICA8IS0tIEJFR0lOIFBBR0UgU0NSSVBUIC0tPg0KICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvcGx1Z2lucy9kYXRhdGFibGVzL2pxdWVyeS5kYXRhVGFibGVzLm1pbi5qcyI+PC9zY3JpcHQ+IDwhLS0gVGFibGVzIEZpbHRlcmluZywgU29ydGluZyAmIEVkaXRpbmcgLS0+DQogICAgPHNjcmlwdCBzcmM9ImFzc2V0cy9qcy9wYWdlcy90YWJsZV9keW5hbWljLmpzIj48L3NjcmlwdD4NCgkgIDxzY3JpcHQgc3JjPSJhc3NldHMvcGx1Z2lucy9ib290c3RyYXAtbG9hZGluZy9sYWRhLm1pbi5qcyI+PC9zY3JpcHQ+IDwhLS0gQnV0dG9ucyBMb2FkaW5nIFN0YXRlIC0tPg0KDQoNCg0KDQoNCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiBwLXQtMCI+DQoNCg0KICAgICAgIA0KDQo8ZGl2IGNsYXNzPSJjb2wtbWQtNCI+DQo8IS0tPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgICBocmVmPSJlZGl0LWZvcm1zLnBocD9mbiU9dWpuSEJuMEVXZDNqbUtMNFlvR1VEYjd5c2tyQkgyNDVpU0U3ZUpnaDNDUT0maWQ9PD89JHVybDs/PiI+JiMxNTc1OyYjMTYwNDsmIzE1NzU7JiMxNjA2OyYjMTU3ODsmIzE2MDI7JiMxNTc1OyYjMTYwNDsgJiMxNjA0OyYjMTU4OTsmIzE2MDE7JiMxNTgxOyYjMTU3NzsgJiMxNTc1OyYjMTYwNDsmIzE2MDU7JiMxNTgxOyYjMTU3ODsmIzE2MDg7JiMxNjA5OzwvYT4tLT4NCjwhLS08YSAgIGNsYXNzPSdidG4gYnRuLWVtYm9zc2VkIGJ0bi1wcmltYXJ5JyAgaHJlZj0iZm9ybXMucGhwP2ZuJT1hV2ZtQlpVN0V5RTNVeEIxa1FoN3lkY0VzdTAyb0ZPYmY4WVFCYVd2S05jPSZpZD08Py8vPSRyb3cyWydJZCddOz8+Ij4mIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE2MDY7JiMxNTc4OyYjMTYwMjsmIzE1NzU7JiMxNjA0OyAmIzE2MDQ7JiMxNTg5OyYjMTYwMTsmIzE1ODE7JiMxNTc3OyAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE1ODE7JiMxNTc4OyYjMTYwODsmIzE2MDk7PC9hPgktLT4NCjxhICAgY2xhc3M9J2J0biBidG4tZW1ib3NzZWQgYnRuLXByaW1hcnknICAgaHJlZj0iZWRpdC1mb3Jtcy5waHA/Zm4lPXh6c1BiY2hSTnZLOVhpWmJDcGlUSjZqSmNwb2pZNENaNUlCWkdhTzJIR3c9JmlkPTw/PSR1cmw7Pz4iID4mIzE1Nzg7JiMxNTkzOyYjMTU4MzsmIzE2MTA7JiMxNjA0OyAmIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE1ODg7JiMxNTc4OyYjMTU4NTsmIzE1NzU7JiMxNjAzOzwvYT4NCjxhICBjbGFzcz0nYnRuIGJ0bi1lbWJvc3NlZCBidG4tYmx1ZScgaHJlZj0iZm9ybXMucGhwP2ZuJT1ZU0FhWGhPeXlmenJvZVkwdG9QUDlyME9rZFlHdWNRdkp3QzBKcGh3Q2tjPSZpZD08Pz0kdXJsOz8+IiA+JiMxNTc4OyYjMTU4MDsmIzE1ODM7JiMxNjEwOyYjMTU4MzsgJiMxNTc1OyYjMTYwNDsmIzE1NzU7JiMxNTg4OyYjMTU3ODsmIzE1ODU7JiMxNTc1OyYjMTYwMzs8L2E+DQo8YSAgY2xhc3M9J2J0biBidG4tZW1ib3NzZWQgYnRuLXN1Y2Nlc3MnIHRhcmdldD0iX2JsYW5rIiAgaHJlZj0icHJpbnQucGhwP2lkPTw/ZWNobyAkdXJsOz8+JnRubCU9dGtvcmRlcnMiID4mIzE1OTE7JiMxNTc2OyYjMTU3NTsmIzE1OTM7JiMxNjA3OyAmIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE1ODg7JiMxNTc4OyYjMTU4NTsmIzE1NzU7JiMxNjAzOzwvYT4NCg0KDQoNCg0KDQo8L2Rpdj4NCiAgICAgICAgDQoNCjxzdHlsZT4NCi5zcGFuMyB7ICANCiAgICBoZWlnaHQ6IDEwMHB4ICFpbXBvcnRhbnQ7DQogICAgb3ZlcmZsb3c6IHNjcm9sbDsNCn0mIzgyMDM7DQo8L3N0eWxlPg0KICAgIDxhIGhyZWY9InRhYmxlcy1maWx0ZXIuaHRtbCMiIGNsYXNzPSJzY3JvbGx1cCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXVwIj48L2k+PC9hPiANCg0KICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvcGx1Z2lucy9kYXRhdGFibGVzL2pxdWVyeS5kYXRhVGFibGVzLm1pbi5qcyI+PC9zY3JpcHQ+IDwhLS0gVGFibGVzIEZpbHRlcmluZywgU29ydGluZyAmIEVkaXRpbmcgLS0+DQogICAgPHNjcmlwdCBzcmM9ImFzc2V0cy9qcy9wYWdlcy90YWJsZV9keW5hbWljLmpzIj48L3NjcmlwdD4NCgkgIDxzY3JpcHQgc3JjPSJhc3NldHMvcGx1Z2lucy9ib290c3RyYXAtbG9hZGluZy9sYWRhLm1pbi5qcyI+PC9zY3JpcHQ+IDwhLS0gQnV0dG9ucyBMb2FkaW5nIFN0YXRlIC0tPg0KCQ0KDQo8ZGl2IGNsYXNzPSJwYW5lbC1jb250ZW50Ij4NCiAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIgdGFibGUtZHluYW1pYyBmaWx0ZXItc2VsZWN0Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KDQogICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+IA0KICAgICAgICAgICA8dGJvZHk+DQoNCiAgICAgDQogICAgICA8L3Rib2R5Pg0KICAgICAgPC90YWJsZT4NCjwvZGl2Pg0KDQoNCg0KDQogPC9kaXY+DQoNCg0KPD8NCg0KIA0KDQogaWYoaXNzZXQoJF9QT1NUWydzdGFydCddKSkgeyANCgkgDQogICAgJHNfZGF0ZTI9IllFUyI7DQogICAgJGRhdGU9ZGF0ZSgiWS1tLWQgSDppOnMiLHRpbWUoKSk7DQogICAgJHVwZGF0ZTExPVVwZGF0ZVJvdygidGtvcmRlcnMiLCJzdGFydCIsJGRhdGUsIklkIiwkdXJsKTsNCiAgICAkdXBkYXRlMTExPVVwZGF0ZVJvdygidGtvcmRlcnMiLCJzdGF0dXMiLCIyIiwiSWQiLCR1cmwpOw0KDQogICRkYXRlMjU9ZGF0ZSgiZC1tLVkiKTsNCiAgICRkYXRlX3RvPXN0cnRvdGltZSgkZGF0ZTI1KTsgDQogICRkYXRlX3RvMj1zdHJ0b3RpbWUoJGVfZGF0ZSk7IA0KDQoNCiAkZGF5c19iMSA9IGNlaWwoYWJzKCRkYXRlX3RvLSRkYXRlX3RvMikgLyA4NjQwMCk7DQoNCiRkYXlzNT0gJGR1ci0kZGF5c19iMTsNCg0KDQogICAgJHVwZGF0ZTExNT1VcGRhdGVSb3coInRrb3JkZXJzIiwic19kYXRlIiwkZGF0ZTI1LCJJZCIsJHVybCk7DQoNCgkgJGVfZGF0ZV94PWRhdGUoJ2QtbS1ZJywgc3RydG90aW1lKCRkYXRlMjUuICIrIi4kZHVyLiJkYXlzIikpOw0KDQogICAgJHVwZGF0ZTExNj1VcGRhdGVSb3coInRrb3JkZXJzIiwiZV9kYXRlIiwkZV9kYXRlX3gsIklkIiwkdXJsKTsNCg0KDQogICAgJHVwZGF0ZTExPVVwZGF0ZVJvdygidGtvcmRlcnMiLCJkYXlzX291dCIsJGR1ciwiSWQiLCR1cmwpOw0KDQoNCiAgICAgICBwcmludCAiPHNjcmlwdD4iOw0KICAgICAgIHByaW50ICIgc2VsZi5sb2NhdGlvbj0nZm9ybXMtYnJvd3NlLnBocD9pZD0kdXJsJnRubCU9eHpzUGJjaFJOdks5WGlaYkNwaVRKNmpKY3Bvalk0Q1o1SUJaR2FPMkhHdz0nOyI7IC8vIENvbW1lbnQgdGhpcyBsaW5lIGlmIHlvdSBkb24ndCB3YW50IHRvIHJlZGlyZWN0DQogICAgICAgcHJpbnQgIjwvc2NyaXB0PiI7DQoJDQp9DQoNCiBpZihpc3NldCgkX1BPU1RbJ2F0dGVuZCddKSkgeyANCgkgDQogICAgJHNfZGF0ZTI9IllFUyI7DQogICAgJGRhdGU9ZGF0ZSgiWS1tLWQiKTsNCiAgICAkdGltZT1kYXRlKCJIOmk6cyIsdGltZSgpKTsNCg0KICAgICRkYXRlMj1OYW1lUm93MygnYXR0ZW5kJywnZGF0ZScsJHVybCwnaWRfb3JkZXInKTsNCg0KICAgaWYoJGRhdGU9PSRkYXRlMil7DQp9ZWxzZXsNCiAgICAkYWRkMj1JbnNlcnRDb2w1KCJhdHRlbmQiLCJpZF9jbGllbnQiLCJpZF91c2VyIiwiaWRfb3JkZXIiLCJkYXRlIiwidGltZSIsJGlkX2NsaWVudCwkaWRfdXNlcl9vbiwkdXJsLCRkYXRlLCR0aW1lKTsNCiAgICAgICAgICAgICAgICAgICAgIH0gCQ0KICAgICAgIHByaW50ICI8c2NyaXB0PiI7DQogICAgICAgcHJpbnQgIiBzZWxmLmxvY2F0aW9uPSdmb3Jtcy1icm93c2UucGhwP2lkPSR1cmwmdG5sJT14enNQYmNoUk52SzlYaVpiQ3BpVEo2akpjcG9qWTRDWjVJQlpHYU8ySEd3PSc7IjsgLy8gQ29tbWVudCB0aGlzIGxpbmUgaWYgeW91IGRvbid0IHdhbnQgdG8gcmVkaXJlY3QNCiAgICAgICBwcmludCAiPC9zY3JpcHQ+IjsNCgkNCn0NCg0KIGlmKGlzc2V0KCRfUE9TVFsnYWJzJ10pKSB7IA0KCSANCiAgICAkc19kYXRlMj0iWUVTIjsNCiAgICAkZGF0ZT1kYXRlKCJZLW0tZCIpOw0KICAgICR0aW1lPWRhdGUoIkg6aTpzIix0aW1lKCkpOw0KICAgICRkYXlzMj0kX1BPU1RbJ2RheXMyJ107DQoNCiAgICAkZGF0ZTI9TmFtZVJvdzMoJ2FicycsJ2RhdGUnLCR1cmwsJ2lkX29yZGVyJyk7DQoNCiAgICAkdXBkYXRlMTExPVVwZGF0ZVJvdygidGtvcmRlcnMiLCJzdGF0dXMiLCIzIiwiSWQiLCR1cmwpOw0KDQoJICRlX2RhdGUyMj1kYXRlKCdkLW0tWScsIHN0cnRvdGltZSgkZV9kYXRlLiIrIi4kZGF5czIuImRheXMiKSk7DQogICAgJHVwZGF0ZTExMj1VcGRhdGVSb3coInRrb3JkZXJzIiwiZV9kYXRlIiwkZV9kYXRlMjIsIklkIiwkdXJsKTsNCg0KDQogICAgJGFkZDI9SW5zZXJ0Q29sNigiYWJzIiwiaWRfY2xpZW50IiwiaWRfdXNlciIsImlkX29yZGVyIiwiZGF0ZSIsInRpbWUiLCJkYXlzIiwkaWRfY2xpZW50LCRpZF91c2VyX29uLCR1cmwsJGRhdGUsJHRpbWUsJGRheXMyKTsNCg0KICAgICAgIHByaW50ICI8c2NyaXB0PiI7DQogICAgICAgcHJpbnQgIiBzZWxmLmxvY2F0aW9uPSdmb3Jtcy1icm93c2UucGhwP2lkPSR1cmwmdG5sJT14enNQYmNoUk52SzlYaVpiQ3BpVEo2akpjcG9qWTRDWjVJQlpHYU8ySEd3PSc7IjsgLy8gQ29tbWVudCB0aGlzIGxpbmUgaWYgeW91IGRvbid0IHdhbnQgdG8gcmVkaXJlY3QNCiAgICAgICBwcmludCAiPC9zY3JpcHQ+IjsNCgkNCn0NCg0KIGlmKGlzc2V0KCRfUE9TVFsnYWJzMiddKSkgeyANCgkgDQogICAgJHNfZGF0ZTI9IllFUyI7DQogICAgJGRhdGU9ZGF0ZSgiZC1tLVkiKTsNCiAgICAkdGltZT1kYXRlKCJIOmk6cyIsdGltZSgpKTsNCiAgJGRhdGUyNT1kYXRlKCJkLW0tWSIpOw0KICAgJGRhdGVfdG89c3RydG90aW1lKCRkYXRlMjUpOyANCiAgJGRhdGVfdG8yPXN0cnRvdGltZSgkZV9kYXRlKTsgDQoNCg0KICAkZGF5c19iMT1jZWlsKGFicygkZGF0ZV90by0kZGF0ZV90bzIpIC8gODY0MDApOw0KDQokZGF5czU9JGRheXNfYjEtJGR1cjsNCg0KDQogJGVfZGF0ZV8xPWRhdGUoJ2QtbS1ZJywgc3RydG90aW1lKCRzX2RhdGUuIisiLiRkYXlzX2IxLiJkYXlzIikpOw0KDQoNCg0KDQoNCg0KICAgICR1cGRhdGUxMT1VcGRhdGVSb3coInRrb3JkZXJzIiwiZGF5c19vdXQiLCRkYXlzX2IxLCJJZCIsJHVybCk7DQoNCg0KICAgICR1cGRhdGUxMTI9VXBkYXRlUm93KCJ0a29yZGVycyIsImVfZGF0ZSIsJGVfZGF0ZV8xLCJJZCIsJHVybCk7DQogICAgJHVwZGF0ZTExMT1VcGRhdGVSb3coInRrb3JkZXJzIiwic3RhdHVzIiwiMiIsIklkIiwkdXJsKTsNCg0KDQogICAgICAgcHJpbnQgIjxzY3JpcHQ+IjsNCiAgICAgICBwcmludCAiIHNlbGYubG9jYXRpb249J2Zvcm1zLWJyb3dzZS5waHA/aWQ9JHVybCZ0bmwlPXh6c1BiY2hSTnZLOVhpWmJDcGlUSjZqSmNwb2pZNENaNUlCWkdhTzJIR3c9JzsiOyAvLyBDb21tZW50IHRoaXMgbGluZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byByZWRpcmVjdA0KICAgICAgIHByaW50ICI8L3NjcmlwdD4iOw0KCQ0KfQ0KPz4NCg0KPGRpdiBjbGFzcz0iY29sLW1kLTYgcG9ydGxldHMgdWktc29ydGFibGUiPg0KDQogICAgICA8ZGl2IGNsYXNzPSJwYW5lbCI+DQogPGRpdiBjbGFzcz0icGFuZWwtY29udGVudCBzZi1za3kiPg0KDQoNCiAgICAgIDxkaXYgY2xhc3M9InJvdyBpbnZvaWNlLXBhZ2UiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIHAtdC0wIj4NCiAgICAgICAgDQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIj4NCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICANCgkJCQkJDQoJCQkJCSAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTYgbS10LTIwIG0tYi0yMCI+DQogICAgICAgICAgICAgICAgICAgICA8cD48aDM+PHN0cm9uZz4mIzE1NzU7JiMxNTg3OyYjMTYwNTsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNTkwOyYjMTYwODs6PC9zdHJvbmc+IDw/PSRuYW1lX2NsaWVudDs/PjwvaDM+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgPHA+PGgzPjxzdHJvbmc+JiMxNTg1OyYjMTYwMjsmIzE2MDU7ICYjMTU3NTsmIzE2MDQ7JiMxNTkzOyYjMTU5MDsmIzE2MDg7Ojwvc3Ryb25nPiA8Pz0kaWRfY2xpZW50Oz8+PC9oMz48L3A+DQogICAgICAgICAgICAgICAgICAgICA8cD48aDM+PHN0cm9uZz4mIzE1ODU7JiMxNjAyOyYjMTYwNTsgJiMxNTc1OyYjMTYwNDsmIzE1ODA7JiMxNjA4OyYjMTU3NTsmIzE2MDQ7IDo8L3N0cm9uZz4gPD89JG1vYmlsZTs/PjwvaDM+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgPHA+PGgzPjxzdHJvbmc+JiMxNTc4OyYjMTU3NTsmIzE1ODU7JiMxNjEwOyYjMTU4MjsgJiMxNTc4OyYjMTU4NzsmIzE1ODA7JiMxNjEwOyYjMTYwNDsgJiMxNTc1OyYjMTYwNDsmIzE1NzU7JiMxNTg4OyYjMTU3ODsmIzE1ODU7JiMxNTc1OyYjMTYwMzs6PC9zdHJvbmc+IDw/PSRkYXRlX29yZHI7Pz48L2gzPjwvcD4NCg0KICAgICAgICAgICAgICAgICAgICAgPHA+PGgzPjxzdHJvbmc+JiMxNTc4OyYjMTU3NTsmIzE1ODU7JiMxNjEwOyYjMTU4MjsgJiMxNTc2OyYjMTU4MzsmIzE1NzU7JiMxNjEwOyYjMTU3NzsgJiMxNTc1OyYjMTYwNDsmIzE1NzU7JiMxNTg4OyYjMTU3ODsmIzE1ODU7JiMxNTc1OyYjMTYwMzs6PC9zdHJvbmc+IDw/PSRzX2RhdGU7Pz48L2gzPjwvcD4NCg0KICAgICAgICAgICAgICAgICAgICAgPHA+PGgzPjxzdHJvbmc+JiMxNTc4OyYjMTU3NTsmIzE1ODU7JiMxNjEwOyYjMTU4MjsgJiMxNjA2OyYjMTYwNzsmIzE1NzU7JiMxNjEwOyYjMTU3NzsgJiMxNTc1OyYjMTYwNDsmIzE1NzU7JiMxNTg4OyYjMTU3ODsmIzE1ODU7JiMxNTc1OyYjMTYwMzs6PC9zdHJvbmc+IDw/PSRlX2RhdGU7Pz48L2gzPjwvcD4NCg0KPC9kaXY+DQoNCgkJCQkJICAgICAgICAgICAgICANCiAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTYgbS10LTIwIG0tYi0yMCI+DQoNCiAgICAgICAgICAgICAgICAgICAgIDxwPjxoMz48c3Ryb25nPiYjMTU3NjsmIzE1ODM7JiMxNTY5OyAmIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE1ODg7JiMxNTc4OyYjMTU4NTsmIzE1NzU7JiMxNjAzOzo8L3N0cm9uZz4gDQoNCjw/cGhwIGlmKCRzdGFydD09IiIpew0KICAgICAgICA/Pg0KPGZvcm0gY2xhc3M9InRpdGxlIiBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiB3aWR0aD0nNTAlJyBuYW1lPSJyZXN1bHQiID4gDQogPGlucHV0IHR5cGU9InN1Ym1pdCIgIG5hbWU9InN0YXJ0IiB2YWx1ZT0iJiMxNTc2OyYjMTU4MzsmIzE1Njk7ICYjMTU3NTsmIzE2MDQ7JiMxNTc1OyYjMTU4ODsmIzE1Nzg7JiMxNTg1OyYjMTU3NTsmIzE2MDM7IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij4NCjw/IH1lbHNlaWYoJHN0YXJ0IT0iIil7Pz4NCjw/ZWNobyAkc3RhcnQ7Pz4NCjw/IH1lbHNlez8+DQomIzE1NzU7JiMxNjA0OyYjMTU4MjsmIzE1ODM7JiMxNjA1OyYjMTYwNzsgJiMxNTkzOyYjMTYxMDsmIzE1ODU7ICYjMTYwNTsmIzE1Nzg7JiMxNTc1OyYjMTU4MTsmIzE2MDc7DQoNCiA8PyB9Pz48L2gzPjwvcD4NCg0KDQo8L2gzPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgIDxwPjxoMz48c3Ryb25nPiYjMTU4MTsmIzE1NzU7JiMxNjA0OyYjMTYwNzsgJiMxNTc1OyYjMTYwNDsmIzE1NzU7JiMxNTg4OyYjMTU3ODsmIzE1ODU7JiMxNTc1OyYjMTYwMzs6PC9zdHJvbmc+IDw/PSRuYW1lX3N0YXR1czs/PjwvaDM+PC9wPg0KDQo8Zm9ybSBjbGFzcz0idGl0bGUiIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIHdpZHRoPSc1MCUnIG5hbWU9InJlc3VsdCIgPiANCiAgICAgICAgICAgICAgICAgICAgIDxwPjxoMz48c3Ryb25nPiAmIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE1ODg7JiMxNTc4OyYjMTU4NTsmIzE1NzU7JiMxNjAzOzo8L3N0cm9uZz4gDQogICAgPD9waHAgaWYoJHN0YXR1cz09IjIiICl7DQogICAgICAgID8+DQogPGlucHV0IHR5cGU9InRleHQiICBuYW1lPSJkYXlzMiIgcGxhY2Vob2xkZXI9IiYjMTU5MzsmIzE1ODM7JiMxNTgzOyAmIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE2MTA7JiMxNTc1OyYjMTYwNTsiIHZhbHVlPSIwIiBzaXplPSI1IiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIiPg0KIDxpbnB1dCB0eXBlPSJzdWJtaXQiICBuYW1lPSJhYnMiIHZhbHVlPSImIzE1Nzg7JiMxNTkzOyYjMTU5MTsmIzE2MTA7JiMxNjA0OyIgY2xhc3M9ImJ0biBidG4tZGFuZ2VyIj4NCjwvZm9ybT4NCjxmb3JtIGNsYXNzPSJ0aXRsZSIgYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgd2lkdGg9JzUwJScgbmFtZT0icmVzdWx0IiA+IA0KPD8gfWVsc2VpZigkc3RhdHVzPT0iMyIpez8+DQogPGlucHV0IHR5cGU9InN1Ym1pdCIgIG5hbWU9ImFiczIiIHZhbHVlPSImIzE1Nzg7JiMxNjAxOyYjMTU5MzsmIzE2MTA7JiMxNjA0OyIgY2xhc3M9ImJ0biBidG4tc3VjY2VzcyI+DQo8PyB9ZWxzZXs/Pg0KJiMxNTc1OyYjMTYwNDsmIzE1ODI7JiMxNTgzOyYjMTYwNTsmIzE2MDc7ICYjMTU5NDsmIzE2MTA7JiMxNTg1OyAmIzE2MDU7JiMxNTc4OyYjMTU3NTsmIzE1ODE7JiMxNjA3Ow0KDQogPD8gfT8+DQo8L2gzPjwvcD4NCg0KPGZvcm0gY2xhc3M9InRpdGxlIiBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiB3aWR0aD0nNTAlJyBuYW1lPSJyZXN1bHQiID4gDQoNCiAgICAgICAgICAgICAgICAgICAgIDxwPjxoMz48c3Ryb25nPiYjMTU3ODsmIzE1ODc7JiMxNTgwOyYjMTYxMDsmIzE2MDQ7ICYjMTU3NTsmIzE2MDQ7JiMxNTgxOyYjMTU5MDsmIzE2MDg7JiMxNTg1Ozo8L3N0cm9uZz4gDQogICAgPD9waHAgaWYoJHN0YXR1cz09IjIiICl7DQogICAgICAgID8+DQogPGlucHV0IHR5cGU9InN1Ym1pdCIgIG5hbWU9ImF0dGVuZCIgdmFsdWU9IiYjMTU4MTsmIzE1OTA7JiMxNjA4OyYjMTU4NTsiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPg0KPD8gfWVsc2V7Pz4NCiYjMTU3NTsmIzE2MDQ7JiMxNTgyOyYjMTU4MzsmIzE2MDU7JiMxNjA3OyAmIzE1OTQ7JiMxNjEwOyYjMTU4NTsgJiMxNjA1OyYjMTU3ODsmIzE1NzU7JiMxNTgxOyYjMTYwNzsNCg0KIDw/IH0/Pg0KDQo8L2gzPjwvcD4NCg0KDQo8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgPC9kaXY+DQoNCg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJjb2wtbWQtMyBwb3J0bGV0cyB1aS1zb3J0YWJsZSI+DQogICAgICA8ZGl2IGNsYXNzPSJwYW5lbCI+DQogPGRpdiBjbGFzcz0icGFuZWwtY29udGVudCBzZi1za3kiPg0KDQoNCiAgICAgIDxkaXYgY2xhc3M9InJvdyBpbnZvaWNlLXBhZ2UiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIHAtdC0wIj4NCiAgICAgICAgDQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIj4NCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICANCgkJCQkJDQoJCQkJCSAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIG0tdC0yMCBtLWItMjAiPg0KICAgICAgICAgICAgICAgICAgICAgPHA+PGgzPjxzdHJvbmc+JiMxNTc1OyYjMTYxMDsmIzE1NzU7JiMxNjA1OyAmIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE1ODg7JiMxNTc4OyYjMTU4NTsmIzE1NzU7JiMxNjAzOzo8L3N0cm9uZz4gPD89JGR1cjs/PjwvaDM+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgPHA+PGgzPjxzdHJvbmc+JiMxNTc1OyYjMTYwNDsmIzE2MDU7JiMxNTc4OyYjMTU3NjsmIzE2MDI7JiMxNjA5OyAmIzE2MDU7JiMxNjA2OyAmIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE1ODg7JiMxNTc4OyYjMTU4NTsmIzE1NzU7JiMxNjAzOyA6PC9zdHJvbmc+IDw/PSRkdXI7Pz48L2gzPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgIDxwPjxoMz48c3Ryb25nPiYjMTU5MzsmIzE1ODM7JiMxNTgzOyAmIzE1NzU7JiMxNjA0OyYjMTU4MTsmIzE1OTA7JiMxNjA4OyYjMTU4NTs6PC9zdHJvbmc+IDw/PSRjb3VudF9hdHRlbnQ7Pz4gPC9oMz48L3A+DQogICAgICAgICAgICAgICAgICAgICA8cD48aDM+PHN0cm9uZz4mIzE1OTM7JiMxNTgzOyYjMTU4MzsgJiMxNTc1OyYjMTYwNDsmIzE1NzU7JiMxNjEwOyYjMTYwMjsmIzE1NzU7JiMxNjAxOyYjMTU3NTsmIzE1Nzg7Ojwvc3Ryb25nPiAgPD89JGNvdW50X2Ficzs/PjwvaDM+PC9wPg0KDQo8L2JyPjwvYnI+PC9icj4NCg0KPC9icj48L2JyPg0KDQoNCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQoNCg0KICAgICAgICAgICAgICAgICAgPC9kaXY+DQoNCg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iY29sLW1kLTMgcG9ydGxldHMgdWktc29ydGFibGUiPg0KICAgICAgPGRpdiBjbGFzcz0icGFuZWwiPg0KIDxkaXYgY2xhc3M9InBhbmVsLWNvbnRlbnQgc2Ytc2t5Ij4NCg0KDQogICAgICA8ZGl2IGNsYXNzPSJyb3cgaW52b2ljZS1wYWdlIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiBwLXQtMCI+DQogICAgICAgIA0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+DQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgDQoJCQkJCQ0KCQkJCQkgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiBtLXQtMjAgbS1iLTIwIj4NCg0KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0idXBsb2Fkcy9wcm9mLzw/PSRpbWFnZTs/PiIgd2lkdGg9IjM1MHB4IiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUwIiA+DQoNCgkJCQkJPGEgaHJlZj0iZm9ybXMtYnJvd3NlLnBocD90bmwlPUR6Z3JvRVh1bk0vRVBObVNKczhWYzFYZ1ZFaEZmb0lNVlpJdS93TmlqVms9JmlkPTw/PSR1cmw/PiIgY2xhc3M9ImJ0biBidG4taW5mbyI+JiMxNTc4OyYjMTU4MTsmIzE1ODM7JiMxNjEwOyYjMTU3OTsgJiMxNTg5OyYjMTYwODsmIzE1ODU7JiMxNTc3OyAmIzE1NzU7JiMxNjA0OyYjMTU3NjsmIzE1ODU7JiMxNjA4OyYjMTYwMTsmIzE1NzY7JiMxNjA0OzwvYT4NCg0KDQoNCg0KDQoNCg0KDQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQoNCiAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQoNCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCg0KDQoNCg0KDQogIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiBwb3J0bGV0cyI+DQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkZXIgcGFuZWwtY29udHJvbHMiPg0KPGgyPg0KJiMxNTc1OyYjMTYwNDsmIzE2MDE7JiMxNjA4OyYjMTU3NTsmIzE1Nzg7JiMxNjEwOyYjMTU4NTsNCjwvaDI+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwtY29udGVudCI+DQogICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWhvdmVyIHRhYmxlLWR5bmFtaWMgZmlsdGVyLXNlbGVjdCI+DQogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dHI+ICAgICAgDQoNCg0KDQogICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1ODU7JiMxNjAyOyYjMTYwNTsgJiMxNTc1OyYjMTYwNDsmIzE1NzU7JiMxNTg4OyYjMTU3ODsmIzE1ODU7JiMxNTc1OyYjMTYwMzs8L3RoPg0KICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1NzU7JiMxNjA0OyYjMTU3NjsmIzE1NzU7JiMxNjAyOyYjMTU3Nzs8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgYmdjb2xvcj0iI2JlYzBiYiImIzE2MDU7JiMxNTg5OyYjMTU4MzsmIzE1ODU7ICYjMTU3NTsmIzE2MDQ7JiMxNjAxOyYjMTU3NTsmIzE1Nzg7JiMxNjA4OyYjMTU4NTsmIzE1Nzc7PC90aD4NCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1Nzg7JiMxNTc1OyYjMTU4NTsmIzE2MTA7JiMxNTgyOyAmIzE1NzU7JiMxNjA0OyYjMTYwMTsmIzE1NzU7JiMxNTc4OyYjMTYwODsmIzE1ODU7JiMxNjA3OzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE1NzY7JiMxNjA0OyYjMTU5NDs8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgYmdjb2xvcj0iI2JlYzBiYiI+JiMxNTkxOyYjMTU3NjsmIzE1NzU7JiMxNTkzOyYjMTYwNzsgJiMxNTc1OyYjMTYwNDsmIzE2MDE7JiMxNTc1OyYjMTU3ODsmIzE2MDg7JiMxNTg1OyYjMTU3Nzs8L3RoPg0KDQoNCiAgICAgICAgICAgICAgICAgICANCg0KDQo8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4NCiAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KCTw/DQoNCiAkYmc5OTk5PSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAgIHRrb3JkZXJzX2RldGFpbHMgd2hlcmUgaWRfb3JkZXI9JyR1cmwnIikgb3IgZGllKCJNeVNRTCBMb2dpbiBFcnJvcjogIi5teXNxbF9lcnJvcigpKTsNCg0KICAgICAgd2hpbGUoJHJvd3MgPSBteXNxbF9mZXRjaF9hcnJheSgkYmc5OTk5KSkNCiAgICAgICAgew0KDQoJCSAgDQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkcm93c1snc3RhdHVzJ109PScxJykNCgkJCQkJCQkJCQkgICRDU1M9Indhcm5pbmciOw0KCQkJCQkJCQkJICAgICAgIGlmKCRyb3dzWydzdGF0dXMnXT09JzMnKQ0KCQkJCQkJCQkJCSAgICRDU1M9ImRhbmdlciI7DQoJCQkJCQkJCQkgICAgICAgaWYoJHJvd3NbJ3N0YXR1cyddPT0nMicpDQoJCQkJCQkJCQkJICAgJENTUz0ic3VjY2VzcyI7DQoJCQkJCQkJCQkgICAgICAgaWYoJHJvd3NbJ3N0YXR1cyddPT0nNCcpDQoJCQkJCQkJCQkJICAgJENTUz0iZGFyayI7DQoJCQkJCQkJCQkJICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSI8P2VjaG8gJENTUzs/PiI+DQoNCjx0ZD48YSBocmVmPSIjIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij48P2VjaG8gJHJvd3NbJ0lkJ107Pz48L2E+PC90ZD4gDQo8dGQ+PD9lY2hvIE5hbWVSb3coJHJvd3NbJ2lkX3NlcnZpY2UnXSwicGxhbnMiKTs/PjwvdGQ+DQo8dGQ+PD9lY2hvIE5hbWVSb3coJHJvd3NbJ2lkX3VzZXInXSwibG9naW4iKTs/PjwvdGQ+CQ0KPHRkPjw/ZWNobyAkcm93c1snZGF0ZXRpbWUnXTs/PjwvdGQ+CQ0KPHRkPjw/ZWNobyAkcm93c1sndG90YWwnXTs/PjwvdGQ+CQ0KPHRkPjxhICBjbGFzcz0nYnRuIGJ0bi1lbWJvc3NlZCBidG4tc3VjY2VzcycgdGFyZ2V0PSJfYmxhbmsiICBocmVmPSJwcmludC5waHA/aWQ9PD9lY2hvICRyb3dzWydJZCddOz8+JnRubCU9dGtvcmRlcnNfZGV0YWlscyIgPiYjMTU5MTsmIzE1NzY7JiMxNTc1OyYjMTU5MzsmIzE2MDc7ICYjMTU3NTsmIzE2MDQ7JiMxNjAxOyYjMTU3NTsmIzE1Nzg7JiMxNjA4OyYjMTU4NTsmIzE2MDc7PC9hPjwvdGQ+DQo8P30/Pg0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgIA0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTYgcG9ydGxldHMiPg0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbCI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwtaGVhZGVyIHBhbmVsLWNvbnRyb2xzIj4NCjxoMj4NCiYjMTU4NzsmIzE2MDY7JiMxNTgzOyYjMTU3NTsmIzE1Nzg7ICYjMTU3NTsmIzE2MDQ7JiMxNTc1OyYjMTU4ODsmIzE1Nzg7JiMxNTg1OyYjMTU3NTsmIzE2MDM7DQo8L2gyPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWNvbnRlbnQiPg0KICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciB0YWJsZS1keW5hbWljIGZpbHRlci1zZWxlY3QiPg0KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRyPiAgICAgIA0KDQoNCg0KICAgICAgIDx0aCAgYmdjb2xvcj0iI2JlYzBiYiI+JiMxNTg1OyYjMTYwMjsmIzE2MDU7ICYjMTU3NTsmIzE2MDQ7JiMxNTg3OyYjMTYwNjsmIzE1ODM7PC90aD4NCiAgICAgICAgICAgICAgIA0KDQogICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIiYjMTYwNTsmIzE1ODk7JiMxNTgzOyYjMTU4NTsgJiMxNTc1OyYjMTYwNDsmIzE1ODc7JiMxNjA2OyYjMTU4Mzs8L3RoPg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggIGJnY29sb3I9IiNiZWMwYmIiPiYjMTU3ODsmIzE1NzU7JiMxNTg1OyYjMTYxMDsmIzE1ODI7ICYjMTU3NTsmIzE2MDQ7JiMxNTg3OyYjMTYwNjsmIzE1ODM7PC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggIGJnY29sb3I9IiNiZWMwYmIiPiYjMTYwNjsmIzE2MDg7JiMxNTkzOyAmIzE1NzU7JiMxNjA0OyYjMTU4MzsmIzE2MDE7JiMxNTkzOzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE1NzY7JiMxNjA0OyYjMTU5NDs8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgYmdjb2xvcj0iI2JlYzBiYiI+JiMxNTkxOyYjMTU3NjsmIzE1NzU7JiMxNTkzOyYjMTYwNzsgJiMxNTc1OyYjMTYwNDsmIzE1ODc7JiMxNjA2OyYjMTU4Mzs8L3RoPg0KDQoNCiAgICAgICAgICAgICAgICAgICANCg0KDQo8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4NCiAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KCTw/DQoNCiAkYmc5OTk5OT0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gICAJdm91c2NoZXJzIHdoZXJlIGlkX2ZhdG9yYT0nJHVybCciKSBvciBkaWUoIk15U1FMIExvZ2luIEVycm9yOiAiLm15c3FsX2Vycm9yKCkpOw0KDQogICAgICB3aGlsZSgkcm93cyA9IG15c3FsX2ZldGNoX2FycmF5KCRiZzk5OTk5KSkNCiAgICAgICAgew0KJGlkX3Z2PSRyb3dzWydJZCddOw0KDQoJCSAgDQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkcm93c1snc3RhdHVzJ109PScxJykNCgkJCQkJCQkJCQkgICRDU1M9Indhcm5pbmciOw0KCQkJCQkJCQkJICAgICAgIGlmKCRyb3dzWydzdGF0dXMnXT09JzMnKQ0KCQkJCQkJCQkJCSAgICRDU1M9ImRhbmdlciI7DQoJCQkJCQkJCQkgICAgICAgaWYoJHJvd3NbJ3N0YXR1cyddPT0nMicpDQoJCQkJCQkJCQkJICAgJENTUz0ic3VjY2VzcyI7DQoJCQkJCQkJCQkgICAgICAgaWYoJHJvd3NbJ3N0YXR1cyddPT0nNCcpDQoJCQkJCQkJCQkJICAgJENTUz0iZGFyayI7DQoJCQkJCQkJCQkJICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSI8P2VjaG8gJENTUzs/PiI+DQoNCjx0ZD48YSBocmVmPSIjIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij48P2VjaG8gJHJvd3NbJ0lkJ107Pz48L2E+PC90ZD4gDQoNCjx0ZD48P2VjaG8gTmFtZVJvdygkcm93c1snaWRfdXNlciddLCJsb2dpbiIpOz8+PC90ZD4JDQoNCjx0ZD48P2VjaG8gJHJvd3NbJ2RhdGV0aW1lJ107Pz48L3RkPgkNCjx0ZD48P2VjaG8gTmFtZVJvdygkcm93c1sndHlwZV9wYXknXSwidHlwZV9wYXkiKTs/PjwvdGQ+CQ0KPHRkPjw/ZWNobyAkcm93c1snYW1vdW50J107Pz48L3RkPgkNCjx0ZD4NCjxhICBjbGFzcz0nYnRuIGJ0bi1lbWJvc3NlZCBidG4tc3VjY2VzcycgdGFyZ2V0PSJfYmxhbmsiICBocmVmPSJwcmludC5waHA/aWQ9PD89JGlkX3Z2Pz4mdG5sJT12b3VzY2hlcnMiID4mIzE1OTE7JiMxNTc2OyYjMTU3NTsmIzE1OTM7JiMxNjA3OyA8L2E+DQo8L3RkPg0KDQo8P30/Pg0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2Rpdj4NCgkJICANCiAgICAgICA8L2Rpdj4NCgkJDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiBwb3J0bGV0cyI+DQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkZXIgcGFuZWwtY29udHJvbHMiPg0KPGgyPg0KJiMxNTc1OyYjMTYwNDsmIzE1ODE7JiMxNTkwOyYjMTYwODsmIzE1ODU7DQo8L2gyPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWNvbnRlbnQiPg0KICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciB0YWJsZS1keW5hbWljIGZpbHRlci1zZWxlY3QiPg0KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRyPiAgICAgIA0KDQoNCg0KICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1NzU7JiMxNjA0OyYjMTU3ODsmIzE1ODc7JiMxNjA0OyYjMTU4NzsmIzE2MDQ7PC90aD4NCiAgICAgICAgICAgICAgIA0KDQogICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE2MDU7JiMxNTg5OyYjMTU4MzsmIzE1ODU7IDwvdGg+DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgYmdjb2xvcj0iI2JlYzBiYiI+JiMxNTc4OyYjMTU3NTsmIzE1ODU7JiMxNjEwOyYjMTU4MjsgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggIGJnY29sb3I9IiNiZWMwYmIiPiYjMTU3NTsmIzE2MDQ7JiMxNjA4OyYjMTYwMjsmIzE1Nzg7PC90aD4NCg0KDQogICAgICAgICAgICAgICAgICAgDQoNCg0KPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+DQogICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCgk8Pw0KDQogJGJnOTk5OT0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gICBhdHRlbmQgd2hlcmUgaWRfb3JkZXI9JyR1cmwnIikgb3IgZGllKCJNeVNRTCBMb2dpbiBFcnJvcjogIi5teXNxbF9lcnJvcigpKTsNCg0KICAgICAgd2hpbGUoJHJvd3MgPSBteXNxbF9mZXRjaF9hcnJheSgkYmc5OTk5KSkNCiAgICAgICAgew0KDQoJCSAgDQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkcm93c1snc3RhdHVzJ109PScxJykNCgkJCQkJCQkJCQkgICRDU1M9Indhcm5pbmciOw0KCQkJCQkJCQkJICAgICAgIGlmKCRyb3dzWydzdGF0dXMnXT09JzMnKQ0KCQkJCQkJCQkJCSAgICRDU1M9ImRhbmdlciI7DQoJCQkJCQkJCQkgICAgICAgaWYoJHJvd3NbJ3N0YXR1cyddPT0nMicpDQoJCQkJCQkJCQkJICAgJENTUz0ic3VjY2VzcyI7DQoJCQkJCQkJCQkgICAgICAgaWYoJHJvd3NbJ3N0YXR1cyddPT0nNCcpDQoJCQkJCQkJCQkJICAgJENTUz0iZGFyayI7DQoJCQkJCQkJCQkJICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSI8P2VjaG8gJENTUzs/PiI+DQoNCjx0ZD48YSBocmVmPSIjIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij48P2VjaG8gJHJvd3NbJ0lkJ107Pz48L2E+PC90ZD4gDQo8dGQ+PD9lY2hvIE5hbWVSb3coJHJvd3NbJ2lkX3VzZXInXSwibG9naW4iKTs/PjwvdGQ+CQ0KPHRkPjw/ZWNobyAkcm93c1snZGF0ZSddOz8+PC90ZD4JDQo8dGQ+PD9lY2hvICRyb3dzWyd0aW1lJ107Pz48L3RkPgkNCg0KPD99Pz4NCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC02IHBvcnRsZXRzIj4NCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWhlYWRlciBwYW5lbC1jb250cm9scyI+DQo8aDI+DQomIzE1NzU7JiMxNjA0OyYjMTU3NTsmIzE2MTA7JiMxNjAyOyYjMTU3NTsmIzE2MDE7JiMxNTc1OyYjMTU3ODsNCjwvaDI+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwtY29udGVudCI+DQogICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWhvdmVyIHRhYmxlLWR5bmFtaWMgZmlsdGVyLXNlbGVjdCI+DQogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dHI+ICAgICAgDQoNCg0KDQogICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1NzU7JiMxNjA0OyYjMTU3ODsmIzE1ODc7JiMxNjA0OyYjMTU4NzsmIzE2MDQ7PC90aD4NCiAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgYmdjb2xvcj0iI2JlYzBiYiI+JiMxNjA1OyYjMTU4OTsmIzE1ODM7JiMxNTg1OyA8L3RoPg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggIGJnY29sb3I9IiNiZWMwYmIiPiYjMTU3ODsmIzE1NzU7JiMxNTg1OyYjMTYxMDsmIzE1ODI7IDwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1NzU7JiMxNjA0OyYjMTYwODsmIzE2MDI7JiMxNTc4OzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICBiZ2NvbG9yPSIjYmVjMGJiIj4mIzE1OTM7JiMxNTgzOyYjMTU4MzsgJiMxNTc1OyYjMTYwNDsmIzE1NzU7JiMxNjEwOyYjMTU3NTsmIzE2MDU7PC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggIGJnY29sb3I9IiNiZWMwYmIiPiYjMTU5MTsmIzE1NzY7JiMxNTc1OyYjMTU5MzsmIzE2MDc7PC90aD4NCg0KICAgICAgICAgICAgICAgICAgIA0KDQoNCjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQoJPD8NCg0KICRiZzk5OTk9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICAgYWJzIHdoZXJlIGlkX29yZGVyPSckdXJsJyIpIG9yIGRpZSgiTXlTUUwgTG9naW4gRXJyb3I6ICIubXlzcWxfZXJyb3IoKSk7DQoNCiAgICAgIHdoaWxlKCRyb3dzID0gbXlzcWxfZmV0Y2hfYXJyYXkoJGJnOTk5OSkpDQogICAgICAgIHsNCg0KCQkgIA0KCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHJvd3NbJ3N0YXR1cyddPT0nMScpDQoJCQkJCQkJCQkJICAkQ1NTPSJ3YXJuaW5nIjsNCgkJCQkJCQkJCSAgICAgICBpZigkcm93c1snc3RhdHVzJ109PSczJykNCgkJCQkJCQkJCQkgICAkQ1NTPSJkYW5nZXIiOw0KCQkJCQkJCQkJICAgICAgIGlmKCRyb3dzWydzdGF0dXMnXT09JzInKQ0KCQkJCQkJCQkJCSAgICRDU1M9InN1Y2Nlc3MiOw0KCQkJCQkJCQkJICAgICAgIGlmKCRyb3dzWydzdGF0dXMnXT09JzQnKQ0KCQkJCQkJCQkJCSAgICRDU1M9ImRhcmsiOw0KCQkJCQkJCQkJCSAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iPD9lY2hvICRDU1M7Pz4iPg0KDQo8dGQ+PGEgaHJlZj0iIyIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+PD9lY2hvICRyb3dzWydJZCddOz8+PC9hPjwvdGQ+IA0KPHRkPjw/ZWNobyBOYW1lUm93KCRyb3dzWydpZF91c2VyJ10sImxvZ2luIik7Pz48L3RkPgkNCjx0ZD48P2VjaG8gJHJvd3NbJ2RhdGUnXTs/PjwvdGQ+CQ0KPHRkPjw/ZWNobyAkcm93c1sndGltZSddOz8+PC90ZD4JDQo8dGQ+PD9lY2hvICRyb3dzWydkYXlzJ107Pz48L3RkPgkNCjx0ZD48YSAgY2xhc3M9J2J0biBidG4tZW1ib3NzZWQgYnRuLXN1Y2Nlc3MnIHRhcmdldD0iX2JsYW5rIiAgaHJlZj0icHJpbnQucGhwP2lkPTw/ZWNobyAkcm93c1snSWQnXTs/PiZ0bmwlPWFicyIgPiYjMTU5MTsmIzE1NzY7JiMxNTc1OyYjMTU5MzsmIzE2MDc7ICYjMTU3NTsmIzE2MDQ7JiMxNTc1OyYjMTYxMDsmIzE2MDI7JiMxNTc1OyYjMTYwMTs8L2E+PC90ZD4NCjw/fT8+DQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KDQoJCSAgDQoNCgkJICANCg0KDQoNCjw/DQoNCg0KfQ0KDQoNCmlmKCR1cmxfdmFyPT0nam9ib3JkZXJzJyl7DQoJDQogDQogJGpvYl9vcmRlcl90aXRsZT1OYW1lUm93MSgkaWRfdmFyLCJqb2JvcmRlcnMiLCJqb2Jfb3JkZXJfdGl0bGUiKTsNCiAkbm90ZXM9TmFtZVJvdzEoJGlkX3Zhciwiam9ib3JkZXJzIiwibm90ZXMiKTsNCiAkdGl0bGVfaj1OYW1lUm93MSgkaWRfdmFyLCJqb2JvcmRlcnMiLCJqb2Jfb3JkZXJfdGl0bGUiKTsNCiAkc19kYXRlPU5hbWVSb3cxKCRpZF92YXIsImpvYm9yZGVycyIsImRhdGVfam9iX29yZGVyc19zIik7DQogJGVfZGF0ZT1OYW1lUm93MSgkaWRfdmFyLCJqb2JvcmRlcnMiLCJkYXRlX2pvYl9vcmRlcnNfZSIpOw0KICRkYXRldGltZT1OYW1lUm93MSgkaWRfdmFyLCJqb2JvcmRlcnMiLCJkYXRldGltZSIpOw0KICRpZF9icmFuY2g9TmFtZVJvdzEoJGlkX3Zhciwiam9ib3JkZXJzIiwiaWRfYnJhbmNoIik7DQogJGJyYW5jaD1OYW1lUm93MSgkaWRfYnJhbmNoLCJjYXRlZ29yeSIsIm5hbWUiKTsNCiAgJGlkX2VtcHA9TmFtZVJvdzEoJGlkX3Zhciwiam9ib3JkZXJzIiwiaWRfZW1wIik7DQogICRpZF91c2Vycj1OYW1lUm93MSgkaWRfdmFyLCJqb2JvcmRlcnMiLCJpZF91c2VyIik7DQogJG5hbWVfZW1wbG95ZWU9TmFtZVJvdzEoJGlkX2VtcHAsImxvZ2luIiwibmFtZSIpOw0KDQogJG5hbWVfdXNlcnI9TmFtZVJvdzEoJGlkX3VzZXJyLCJsb2dpbiIsIm5hbWUiKTsNCg0KICAkc3RhdHVzX2o9TmFtZVJvdzEoJGlkX3Zhciwiam9ib3JkZXJzIiwic3RhdHVzIik7DQogJGRhdGVfcGVuZD1OYW1lUm93MSgkaWRfdmFyLCJqb2JvcmRlcnMiLCJkYXRlX3BlbmRpbmciKTsNCiAkZmlsZV9qPU5hbWVSb3cxKCRpZF92YXIsImpvYm9yZGVycyIsImZpbGUiKTsNCiAkZXZhPU5hbWVSb3cxKCRpZF92YXIsImpvYm9yZGVycyIsImV2YSIpOw0KDQoNCiAkaWRfcmVxPU5hbWVSb3cxKCRpZF92YXIsImpvYm9yZGVycyIsImlkX3JlcXVlc3QiKTsNCiAgJHRpdGxlX29yZD1OYW1lUm93MSgkaWRfcmVxLCJ0a29yZGVycyIsInRpdGxlIik7DQoNCg0KICAgICAkaWRfY2xpZW50PU5hbWVSb3czKCd0a29yZGVycycsJ2lkX2NsaWVudCcsJGlkX3JlcSwnSWQnKTsNCg0KICAgICAgICAgICAgJG5hbWVfY2xpZW50PU5hbWVSb3czKCdyc2NsaWVudHMnLCduYW1lJywkaWRfY2xpZW50LCdJZCcpOw0KICAgICAkZV9kYXRlX2M9TmFtZVJvdzMoJ3Rrb3JkZXJzJywnZV9kYXRlJywkaWRfcmVxLCdJZCcpOw0KDQoNCiAkbmFtZV9maWxlPSImIzE1Nzg7JiMxNTgxOyYjMTYwNTsmIzE2MTA7JiMxNjA0OyAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE2MDQ7JiMxNjAxOyAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE1ODU7JiMxNjAxOyYjMTYwMjsiOw0KDQogDQogaWYoJGZpbGVfaj09IiIpDQogJGRpc2FibGVkMT0iZGlzYWJsZWQiOw0KDQogaWYoJGZpbGVfaj09IiIpDQogJG5hbWVfZmlsZT0iJiMxNjA0OyYjMTU3NTsmIzE2MTA7JiMxNjA4OyYjMTU4MDsmIzE1ODM7ICYjMTYwNTsmIzE2MDQ7JiMxNjAxOyI7DQoNCg0KDQoJJHRtdD1kYXRlKCdtL2QvWScpOw0KCSRlcnJvciA9ICIiOw0KCSRlcnJvcjIgPSAiIjsNCgkkZXJyb3IzID0gIiI7DQogICR1cmw9JF9HRVRbImlkIl07DQogICRpZF9qb2I9JF9HRVRbImlkIl07DQoNCiAkdHlwZV9zPSJzdWJtaXQiOw0KIA0KICR0eXBlMT0iIjsNCg0KDQogICRidXQxPSJoaWRkZW4iOw0KICAkYnV0Mj0iaGlkZGVuIjsNCiAgJGJ1dDM9ImhpZGRlbiI7DQogDQogIGlmKCRpZF91c2VyX29uPT0kaWRfZW1wcCYkc3RhdHVzX2ohPSIyNCIpDQogICAkYnV0MT0iYnV0dG9uIjsNCiAgaWYoJGlkX3VzZXJfb249PSRpZF91c2VyciYkc3RhdHVzX2ohPSIyNCIpDQogICAkYnV0Mj0iYnV0dG9uIjsNCiANCiAgIGlmKCRpZF91c2VyX29uPT0kaWRfdXNlcnImJHN0YXR1c19qIT0iMjQiKQ0KICAgJGJ1dDM9ImJ1dHRvbiI7DQogDQoNCiANCiAkdHlwZTI9InN1Ym1pdCI7DQogJGVkaXQyPSIiOw0KICRqX3A9ImRpc2FibGVkIjsNCg0KDQoNCiBpZigkc3RhdHVzX2o9PSIxOCIpDQogJGpfcD0iIjsNCg0KICBpZigkaWRfdXNlcnI9PSR1c2VyaWQpDQogJGpfcD0iZGlzYWJsZWQiOw0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vL29wZW5lZC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KIGlmKCRzdGF0dXNfaj09IjE4IikNCiAkc3RhdHVzX2Jhcj0iMjAiOw0KIGlmKCRzdGF0dXNfaj09IjE4IikNCiAkc3RhdHVzX25hbWU9TmFtZVJvdzEoJHN0YXR1c19qLCJzeXNzdGF0dXMiLCJuYW1lIik7DQogaWYoJHN0YXR1c19qPT0iMTgiKQ0KICRzdGF0dXNfY3NzPSJwcmltYXJ5IjsNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vcGVuZGluZy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogaWYoJHN0YXR1c19qPT0iMTkiKQ0KICRzdGF0dXNfYmFyPSI0MCI7DQogaWYoJHN0YXR1c19qPT0iMTkiKQ0KICRzdGF0dXNfbmFtZT1OYW1lUm93MSgkc3RhdHVzX2osInN5c3N0YXR1cyIsIm5hbWUiKTsNCiBpZigkc3RhdHVzX2o9PSIxOSIpDQogJGRhdGVfc3RhdHVzPU5hbWVSb3cxKCRpZF92YXIsImpvYm9yZGVycyIsImRhdGVfcGVuZGluZyIpOw0KIGlmKCRzdGF0dXNfaj09IjE5IikNCiAkc3RhdHVzX2Nzcz0id2FybmluZyI7DQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vL2RvbmUvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogaWYoJHN0YXR1c19qPT0iMjAiKQ0KICRzdGF0dXNfYmFyPSI3MCI7DQogaWYoJHN0YXR1c19qPT0iMjAiKQ0KICRzdGF0dXNfbmFtZT1OYW1lUm93MSgkc3RhdHVzX2osInN5c3N0YXR1cyIsIm5hbWUiKTsNCiBpZigkc3RhdHVzX2o9PSIyMCIpDQogJGRhdGVfc3RhdHVzPU5hbWVSb3cxKCRpZF92YXIsImpvYm9yZGVycyIsImRhdGVfZG9uZSIpOw0KIGlmKCRzdGF0dXNfaj09IjIwIikNCiAkc3RhdHVzX2Nzcz0iYmx1ZSI7DQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vZmFpZWxkLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogaWYoJHN0YXR1c19qPT0iMjEiKQ0KICRzdGF0dXNfYmFyPSI3MCI7DQogaWYoJHN0YXR1c19qPT0iMjEiKQ0KICRzdGF0dXNfbmFtZT1OYW1lUm93MSgkc3RhdHVzX2osInN5c3N0YXR1cyIsIm5hbWUiKTsNCiBpZigkc3RhdHVzX2o9PSIyMSIpDQogJGRhdGVfc3RhdHVzPU5hbWVSb3cxKCRpZF92YXIsImpvYm9yZGVycyIsImRhdGVfZmFpbGVkIik7DQogaWYoJHN0YXR1c19qPT0iMjEiKQ0KICRzdGF0dXNfY3NzPSJkYW5nZXIiOw0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL2RvbmVzdWNzc2VzLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCg0KIGlmKCRzdGF0dXNfaj09IjIyIikNCiAkc3RhdHVzX2Jhcj0iMTAwIjsNCiBpZigkc3RhdHVzX2o9PSIyMiIpDQogJHN0YXR1c19uYW1lPU5hbWVSb3cxKCRzdGF0dXNfaiwic3lzc3RhdHVzIiwibmFtZSIpOw0KIGlmKCRzdGF0dXNfaj09IjIyIikNCiAkZGF0ZV9zdGF0dXM9TmFtZVJvdzEoJGlkX3Zhciwiam9ib3JkZXJzIiwiZGF0ZV9kb25lX3N1Y2Nlc3MiKTsNCiBpZigkc3RhdHVzX2o9PSIyMiIpDQogJHN0YXR1c19jc3M9InN1Y2Nlc3MiOw0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9kb25lX2ZhaWxlZC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCiBpZigkc3RhdHVzX2o9PSIyMyIpDQogJHN0YXR1c19iYXI9IjEwMCI7DQogaWYoJHN0YXR1c19qPT0iMjMiKQ0KICRzdGF0dXNfbmFtZT1OYW1lUm93MSgkc3RhdHVzX2osInN5c3N0YXR1cyIsIm5hbWUiKTsNCiBpZigkc3RhdHVzX2o9PSIyMyIpDQogJGRhdGVfc3RhdHVzPU5hbWVSb3cxKCRpZF92YXIsImpvYm9yZGVycyIsImRhdGVfZG9uZV9mYWlsZWQiKTsNCiBpZigkc3RhdHVzX2o9PSIyMyIpDQogJHN0YXR1c19jc3M9ImRhbmdlciI7DQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCiBpZigkc3RhdHVzX2o9PSIyNCIpDQogJHN0YXR1c19iYXI9IjEwMCI7DQogaWYoJHN0YXR1c19qPT0iMjQiKQ0KICRzdGF0dXNfbmFtZT1OYW1lUm93MSgkc3RhdHVzX2osInN5c3N0YXR1cyIsIm5hbWUiKTsNCiBpZigkc3RhdHVzX2o9PSIyNCIpDQogJGRhdGVfc3RhdHVzPU5hbWVSb3cxKCRpZF92YXIsImpvYm9yZGVycyIsImRhdGVfZG9uZV9mYWlsZWQiKTsNCiBpZigkc3RhdHVzX2o9PSIyNCIpDQogJHN0YXR1c19jc3M9ImRhbmdlciI7DQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCg0KDQoNCiBpZihpc3NldCgkX1BPU1RbJ3JlcGxheS1mb3JtJ10pKSB7IA0KICRmaWxlX3NpemU9JF9GSUxFU1siZmlsZSJdWyJzaXplIl07IA0KJGN1cnJlbnRfaW1hZ2U9JF9GSUxFU1snZmlsZSddWyduYW1lJ107DQokZXh0ZW5zaW9uID0gc3Vic3RyKHN0cnJjaHIoJGN1cnJlbnRfaW1hZ2UsICcuJyksIDEpOw0KJGltYWdlID0gcmFuZCgxLDk5OTk5KS4nLicuZW5kKCRjdXJyZW50X2ltYWdlKS4kZXh0ZW5zaW9uOw0KJGRlc3RpbmF0aW9uPSJ1cGxvYWRzL3JlcXVlc3RzLyIuJGltYWdlOw0KaWYoJGN1cnJlbnRfaW1hZ2U9PSIiKQ0KCSRpbWFnZT0iIjsNCgkJIAkJICRpZF9lbXA9TmFtZVJvdzMoInJlcXVlc3RfZGV0YWlscyIsImlkX3VzZXIiLCRpZF92YXIsImlkX3JlcXVlc3QiKTsNCg0KICAgLy8gJGlkX2VtcD1OYW1lUm93MygicmVxdWVzdF9kZXRhaWxzIiwiaWRfcmVxdWVzdCIsJGlkX3ZhciwiaWRfZW1wIik7DQogICAgLy8kcmVxdWVzdF90aXRsZT1OYW1lUm93MSgkaWRfdmFyLCJyZXF1ZXN0IiwicmVxdWVzdF90aXRsZSIpOyANCgkgJHN1Y2Nlc3MgPSB0cnVlOw0KCSAkUmVxdWVzdFRvb2xzPSBuZXcgUmVxdWVzdFRvb2xzKCk7DQoJICR1cGxvYWRfc2l6ZT1OYW1lUm93MygiZW1wX3NldHRpbmdzIiwidXBsb2FkX3NpemUiLCRpZF9lbXBfcywiaWRfZW1wIik7DQogIAkgaWYoJFJlcXVlc3RUb29scy0+Y2hlY2tfSW1hZ2UoJGZpbGVfc2l6ZSwkdXBsb2FkX3NpemUpKQ0KCXsNCgkgICAgJGVycm9yMyAuPSAiKiAmIzE2MDU7JiMxNTg3OyYjMTU3NTsmIzE1ODE7JiMxNTc3OyAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE2MDQ7JiMxNjAxOyAmIzE1NzU7JiMxNjAzOyYjMTU3NjsmIzE1ODU7ICYjMTYwNTsmIzE2MDY7ICAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE1ODc7JiMxNTc1OyYjMTU4MTsmIzE2MDc7ICYjMTU3NTsmIzE2MDQ7JiMxNjA1OyYjMTU4MTsmIzE1ODM7JiMxNTgzOyYjMTYwNzs8L3AvPiBuciI7DQoJICAgICRzdWNjZXNzID0gZmFsc2U7DQoJfQ0KCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9jaGVja2JveC8vLy8vLy8vLy8NCgkgaWYoJF9QT1NUWydub3RlcyddPT0iIikNCgl7DQoJICAgICRlcnJvcjQ9ICIqICYjMTYwNDsmIzE1NzU7JiMxNTc4OyYjMTYwODsmIzE1ODA7JiMxNTgzOyAmIzE1Nzg7JiMxNjAxOyYjMTU3NTsmIzE1ODk7JiMxNjEwOyYjMTYwNDsgJiMxNjA0OyYjMTYwNDsmIzE1OTE7JiMxNjA0OyYjMTU3NjsgPC9wLz4gbnIiOw0KCSAgICAkc3VjY2VzcyA9IGZhbHNlOw0KCX0JIA0KCSBpZigkc3VjY2VzcykNCgl7DQoJCSRkYXRhMlsnaWRfZW1wJ109JGlkX2VtcDsNCgkgICAgJGRhdGEyWydpZF91c2VyJ109ICRpZF91c2VyX29uOyAvL2VuY3J5cHQgdGhlIHBhc3N3b3JkIGZvciBzdG9yYWdlDQoJICAgICRkYXRhMlsnbm90ZXMnXT0kX1BPU1RbJ25vdGVzJ107IC8vZW5jcnlwdCB0aGUgcGFzc3dvcmQgZm9yIHN0b3JhZ2UNCgkgICAgJGRhdGEyWydmaWxlJ109JGltYWdlOyAvL2VuY3J5cHQgdGhlIHBhc3N3b3JkIGZvciBzdG9yYWdlDQoJICAgICRkYXRhMlsnaWRfcmVxdWVzdCddPSRpZF92YXI7IC8vZW5jcnlwdCB0aGUgcGFzc3dvcmQgZm9yIHN0b3JhZ2UNCgkgICAgJGFjdGlvbiA9IGNvcHkoJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddLCAkZGVzdGluYXRpb24pOw0KCQkkcmVxX2RldCA9IG5ldyBSZXF1ZXN0X2RldGFpbHMoJGRhdGEyKTsNCgkgICAgJHJlcV9kZXQtPnNhdmUodHJ1ZSk7DQoJCSANCgkJIA0KDQoJDQoJIAlwcmludCAiPHNjcmlwdD4iOw0KICAgICAgIHByaW50ICIgc2VsZi5sb2NhdGlvbj0nZm9ybXMtYnJvd3NlLnBocD9pZD0kaWRfdmFyJnRubCU9JHVyZic7IjsgLy8gQ29tbWVudCB0aGlzIGxpbmUgaWYgeW91IGRvbid0IHdhbnQgdG8gcmVkaXJlY3QNCiAgICAgICAgICBwcmludCAiPC9zY3JpcHQ+IjsNCiB9fQ0KICBpZihpc3NldCgkX1BPU1RbJ2FncmVlLXRvJ10pKSB7IA0KJGZpbGVfc2l6ZT0kX0ZJTEVTWyJmaWxlIl1bInNpemUiXTsgDQokY3VycmVudF9pbWFnZT0kX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTsNCiRleHRlbnNpb24gPSBzdWJzdHIoc3RycmNocigkY3VycmVudF9pbWFnZSwgJy4nKSwgMSk7DQokaW1hZ2UgPSByYW5kKDEsOTk5OTkpLicuJy5lbmQoJGN1cnJlbnRfaW1hZ2UpLiRleHRlbnNpb247DQokZGVzdGluYXRpb249InVwbG9hZHMvcmVxdWVzdHMvIi4kaW1hZ2U7DQppZigkY3VycmVudF9pbWFnZT09IiIpDQoJJGltYWdlPSIiOw0KCQkgJGlkX2VtcD1OYW1lUm93MygicmVxdWVzdF9kZXRhaWxzIiwiaWRfcmVxdWVzdCIsJGlkX3ZhciwiaWRfdXNlciIpOw0KCQkvLyAkaWRfZW1wPU5hbWVSb3czKCJyZXF1ZXN0X2RldGFpbHMiLCJpZF9yZXF1ZXN0IiwkaWRfdmFyLCJpZF9lbXAiKTsNCiAgICAgICAgIC8vJHJlcXVlc3RfdGl0bGU9TmFtZVJvdzEoJGlkX3ZhciwicmVxdWVzdCIsInJlcXVlc3RfdGl0bGUiKTsNCgkJIA0KCQkgICAJJHN1Y2Nlc3MgPSB0cnVlOw0KCSRSZXF1ZXN0VG9vbHM9IG5ldyBSZXF1ZXN0VG9vbHMoKTsNCg0KCSAkdXBsb2FkX3NpemU9TmFtZVJvdzMoImVtcF9zZXR0aW5ncyIsInVwbG9hZF9zaXplIiwkaWRfZW1wX3MsImlkX2VtcCIpOw0KDQogIAkgaWYoJFJlcXVlc3RUb29scy0+Y2hlY2tfSW1hZ2UoJGZpbGVfc2l6ZSwkdXBsb2FkX3NpemUpKQ0KCXsNCgkgICAgJGVycm9yMyAuPSAiKiAmIzE2MDU7JiMxNTg3OyYjMTU3NTsmIzE1ODE7JiMxNTc3OyAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE2MDQ7JiMxNjAxOyAmIzE1NzU7JiMxNjAzOyYjMTU3NjsmIzE1ODU7ICYjMTYwNTsmIzE2MDY7ICAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE1ODc7JiMxNTc1OyYjMTU4MTsmIzE2MDc7ICYjMTU3NTsmIzE2MDQ7JiMxNjA1OyYjMTU4MTsmIzE1ODM7JiMxNTgzOyYjMTYwNzs8L3AvPiBuciI7DQoJICAgICRzdWNjZXNzID0gZmFsc2U7DQoJfQ0KCQ0KCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9jaGVja2JveC8vLy8vLy8vLy8NCg0KCSBpZigkX1BPU1RbJ25vdGVzJ109PSIiKQ0KCXsNCgkgICAgJGVycm9yND0gIiogJiMxNjA0OyYjMTU3NTsmIzE1Nzg7JiMxNjA4OyYjMTU4MDsmIzE1ODM7ICYjMTU3ODsmIzE2MDE7JiMxNTc1OyYjMTU4OTsmIzE2MTA7JiMxNjA0OyAmIzE2MDQ7JiMxNjA0OyYjMTU5MTsmIzE2MDQ7JiMxNTc2OyA8L3AvPiBuciI7DQoJICAgICRzdWNjZXNzID0gZmFsc2U7DQoJfQkgDQoJCSBpZigkX1BPU1RbJ2lkX2VtcCddPT0iIikNCgl7DQoJICAgICRlcnJvcjU9ICIqICYjMTYwNDsmIzE2MDU7ICYjMTYxMDsmIzE1Nzg7JiMxNjA1OyAmIzE1NzU7JiMxNTgyOyYjMTU3ODsmIzE2MTA7JiMxNTc1OyYjMTU4NTsgJiMxNTc1OyYjMTYwNDsmIzE2MDU7JiMxNTgzOyYjMTYxMDsmIzE1ODU7IDwvcC8+IG5yIjsNCgkgICAgJHN1Y2Nlc3MgPSBmYWxzZTsNCgl9CSANCgkJIA0KCSBpZigkc3VjY2VzcykNCgl7DQoJCSRkYXRhMlsnaWRfZW1wJ109JF9QT1NUWydpZF9lbXAnXTsNCgkgICAgJGRhdGEyWydpZF91c2VyJ109ICRpZF91c2VyX29uOyAvL2VuY3J5cHQgdGhlIHBhc3N3b3JkIGZvciBzdG9yYWdlDQoJICAgICRkYXRhMlsnbm90ZXMnXT0kX1BPU1RbJ25vdGVzJ107IC8vZW5jcnlwdCB0aGUgcGFzc3dvcmQgZm9yIHN0b3JhZ2UNCgkgICAgJGRhdGEyWydmaWxlJ109JGltYWdlOyAvL2VuY3J5cHQgdGhlIHBhc3N3b3JkIGZvciBzdG9yYWdlDQoJICAgICRkYXRhMlsnaWRfcmVxdWVzdCddPSRpZF92YXI7IC8vZW5jcnlwdCB0aGUgcGFzc3dvcmQgZm9yIHN0b3JhZ2UNCgkgICAgJGFjdGlvbiA9IGNvcHkoJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddLCAkZGVzdGluYXRpb24pOw0KCQkkcmVxX2RldCA9IG5ldyBSZXF1ZXN0X2RldGFpbHMoJGRhdGEyKTsNCgkgICAgJHJlcV9kZXQtPnNhdmUodHJ1ZSk7DQoJCSANCgkJIA0KDQoJCXByaW50ICI8c2NyaXB0PiI7DQogICAgICAgcHJpbnQgIiBzZWxmLmxvY2F0aW9uPSdmb3Jtcy1icm93c2UucGhwP2lkPSRpZF92YXImdG5sJT0kdXJmJzsiOyAvLyBDb21tZW50IHRoaXMgbGluZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byByZWRpcmVjdA0KICAgICAgICAgIHByaW50ICI8L3NjcmlwdD4iOw0KIH19DQogDQogDQogDQoNCiANCg0KICAgICBpZihpc3NldCgkX1BPU1RbJ2FncmVlLWZvcm0nXSkpIHsgDQoJICRpZF9hcHA9JGlkOw0KCSAkZGF0ZV9hcHA9JF9QT1NUWydkYXRlX2FwcCddOw0KCSAkdGltZV9hcHA9JF9QT1NUWyd0aW1lX2FwcCddOw0KCSAkaWRfbWFuZz0kX1BPU1RbJ2lkX21hbmcnXTsNCgkgJG5vdGVzPSRfUE9TVFsnbm90ZXMnXTsNCgkgJHN0YXR1cz0iNCI7DQoJICRkYXRhWydpZF9hcHAnXT0kaWRfYXBwOw0KCSAkZGF0YVsnZGF0ZV9hcHAnXT0gJGRhdGVfYXBwOyAvL2VuY3J5cHQgdGhlIHBhc3N3b3JkIGZvciBzdG9yYWdlDQoJICRkYXRhWyd0aW1lX2FwcCddPSAkdGltZV9hcHA7IC8vZW5jcnlwdCB0aGUgcGFzc3dvcmQgZm9yIHN0b3JhZ2UNCgkgJGRhdGFbJ2lkX21hbmcnXT0gJGlkX21hbmc7IC8vZW5jcnlwdCB0aGUgcGFzc3dvcmQgZm9yIHN0b3JhZ2UNCgkgJGRhdGFbJ25vdGVzJ109ICRub3RlczsgLy9lbmNyeXB0IHRoZSBwYXNzd29yZCBmb3Igc3RvcmFnZQ0KCSAkZGF0YVsnc3RhdHVzJ10gPSRzdGF0dXM7DQogICAgICRuZXdFbXBhcHBhcHA9IG5ldyBFbXBhcHBhcHAoJGRhdGEpOw0KCSAkbmV3RW1wYXBwYXBwLT5zYXZlKHRydWUpOw0KCSAkZGF0YTJbJ2lkJ10gPSRpZDsNCgkgJGRhdGEyWydzdGF0dXMnXSA9JHN0YXR1czsNCgkgJG5ld0VtcF9hcHBsaWNhdGlvbiA9IG5ldyBFbXBfYXBwbGljYXRpb24oJGRhdGEyKTsJDQoJICRuZXdFbXBfYXBwbGljYXRpb24tPnNhdmUyKCk7DQoJICBlY2hvICJnb29kIjsNCgkgIC8vaGVhZGVyKCJMb2NhdGlvbjpmb3Jtcy1icm93c2UucGhwP2lkPSRpZCZ0bmwlPSR1cmYiKTsNCg0KCSAgCSAgICAgICAgICAgICR1MT0iZW1wYXBwYXBwIjsNCgkJCQkJJHVybD1lbmNyeXB0SXQoJHUxKTsNCg0KCSAgDQoJICAJCXByaW50ICI8c2NyaXB0PiI7DQogICAgICAgcHJpbnQgIiBzZWxmLmxvY2F0aW9uPSdlbXBsb3llZXNfbGlzdC5waHA/dG5sJT0kdXJsJmlkdmFyPTQnOyI7IC8vIENvbW1lbnQgdGhpcyBsaW5lIGlmIHlvdSBkb24ndCB3YW50IHRvIHJlZGlyZWN0DQogICAgICAgICAgcHJpbnQgIjwvc2NyaXB0PiI7DQp9DQoNCiAgICAgIGlmKGlzc2V0KCRfUE9TVFsncmVwbGF5LWonXSkpIHsgDQoJICAkZmlsZV9zaXplPSRfRklMRVNbImZpbGUiXVsic2l6ZSJdOyANCiRjdXJyZW50X2ltYWdlPSRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddOw0KJGV4dGVuc2lvbiA9IHN1YnN0cihzdHJyY2hyKCRjdXJyZW50X2ltYWdlLCAnLicpLCAxKTsNCiRpbWFnZSA9IHJhbmQoMSw5OTk5OSkuJy4nLmVuZCgkY3VycmVudF9pbWFnZSkuJGV4dGVuc2lvbjsNCiRkZXN0aW5hdGlvbj0idXBsb2Fkcy9qb2JvcmRlcnMvIi4kaW1hZ2U7DQppZigkY3VycmVudF9pbWFnZT09IiIpDQoJJGltYWdlPSIiOw0KCSAkZGF0YVsnaWRfam9iX29yZGVycyddPSRpZF9qb2I7DQoJICRkYXRhWydpZF91c2VyJ10gPSRpZF91c2VyX29uOw0KCSAkZGF0YVsnc3RhdHVzJ10gPSRfUE9TVFsnc3RhdHVzJ107DQoJICRkYXRhWydub3RlcyddID0kX1BPU1RbJ25vdGVzJ107DQoJICRkYXRhWydmaWxlJ109JGltYWdlOyAvL2VuY3J5cHQgdGhlIHBhc3N3b3JkIGZvciBzdG9yYWdlDQoJICRhY3Rpb24gPSBjb3B5KCRfRklMRVNbJ2ZpbGUnXVsndG1wX25hbWUnXSwgJGRlc3RpbmF0aW9uKTsNCgkJDQoJICRuZXdqb2Jfb3JkZXJzX2RldGFpbHMgPSBuZXcgam9iX29yZGVyc19kZXRhaWxzKCRkYXRhKTsJDQoJICRuZXdqb2Jfb3JkZXJzX2RldGFpbHMtPnNhdmUodHJ1ZSk7DQoJIA0KCSANCgkgJGRhdGEyWydpZCddID0kaWRfam9iOw0KCSAkZGF0YTJbJ3N0YXR1cyddID0kX1BPU1RbJ3N0YXR1cyddOw0KCSAkbmV3Sm9ib3JkZXJzID0gbmV3IEpvYm9yZGVycygkZGF0YTIpOwkNCgkgJG5ld0pvYm9yZGVycy0+c2F2ZV9kKCk7DQoJIA0KCSANCgkNCgkJcHJpbnQgIjxzY3JpcHQ+IjsNCiAgICAgICBwcmludCAiIHNlbGYubG9jYXRpb249J2Zvcm1zLWJyb3dzZS5waHA/aWQ9JGlkX3ZhciZ0bmwlPSR1cmYnOyI7IC8vIENvbW1lbnQgdGhpcyBsaW5lIGlmIHlvdSBkb24ndCB3YW50IHRvIHJlZGlyZWN0DQogICAgICAgICAgcHJpbnQgIjwvc2NyaXB0PiI7DQoJDQp9DQoNCg0KICAgICAgaWYoaXNzZXQoJF9QT1NUWydjbG9zZS1qJ10pKSB7IA0KCSAgJGZpbGVfc2l6ZT0kX0ZJTEVTWyJmaWxlIl1bInNpemUiXTsgDQokY3VycmVudF9pbWFnZT0kX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTsNCiRleHRlbnNpb24gPSBzdWJzdHIoc3RycmNocigkY3VycmVudF9pbWFnZSwgJy4nKSwgMSk7DQokaW1hZ2UgPSByYW5kKDEsOTk5OTkpLicuJy5lbmQoJGN1cnJlbnRfaW1hZ2UpLiRleHRlbnNpb247DQokZGVzdGluYXRpb249InVwbG9hZHMvam9ib3JkZXJzLyIuJGltYWdlOw0KaWYoJGN1cnJlbnRfaW1hZ2U9PSIiKQ0KCSRpbWFnZT0iIjsNCg0KCSANCgkgDQoJICRkYXRhMlsnaWQnXSA9JGlkX2pvYjsNCgkgJGRhdGEyWydzdGF0dXMnXSA9IjI0IjsNCgkgJGRhdGEyWydldmEnXSA9JF9QT1NUWydldmEnXTsNCgkgJG5ld0pvYm9yZGVycyA9IG5ldyBKb2JvcmRlcnMoJGRhdGEyKTsJDQoJICRuZXdKb2JvcmRlcnMtPnNhdmVfYygpOw0KCSANCg0KCQkgIAkJcHJpbnQgIjxzY3JpcHQ+IjsNCiAgICAgICBwcmludCAiIHNlbGYubG9jYXRpb249J2Zvcm1zLWJyb3dzZS5waHA/aWQ9JGlkX3ZhciZ0bmwlPSR1cmYnOyI7IC8vIENvbW1lbnQgdGhpcyBsaW5lIGlmIHlvdSBkb24ndCB3YW50IHRvIHJlZGlyZWN0DQogICAgICAgICAgcHJpbnQgIjwvc2NyaXB0PiI7DQp9DQoNCg0KICAgICBpZihpc3NldCgkX1BPU1RbJ3N0YXJ0LWpvYiddKSkgeyANCgkgJHN0YXR1cz0iMTkiOw0KCSAkZGF0YTJbJ2lkJ10gPSRpZF9qb2I7DQoJICRkYXRhMlsnc3RhdHVzJ10gPSIxOSI7DQoJICRuZXdKb2JvcmRlcnMgPSBuZXcgSm9ib3JkZXJzKCRkYXRhMik7CQ0KCSAkbmV3Sm9ib3JkZXJzLT5zYXZlX3AoKTsNCgkJcHJpbnQgIjxzY3JpcHQ+IjsNCiAgICAgICBwcmludCAiIHNlbGYubG9jYXRpb249J2Zvcm1zLWJyb3dzZS5waHA/aWQ9JGlkX3ZhciZ0bmwlPSR1cmYnOyI7IC8vIENvbW1lbnQgdGhpcyBsaW5lIGlmIHlvdSBkb24ndCB3YW50IHRvIHJlZGlyZWN0DQogICAgICAgICAgcHJpbnQgIjwvc2NyaXB0PiI7DQoNCn0NCg0KPz4NCgkgPGRpdiBjbGFzcz0iY29sLW1kLTgiPg0KCSA8ZGl2IGNsYXNzPSJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIHByb2dyZXNzLWJhci1sYXJnZSBhY3RpdmUiPg0KPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci08Pz0kc3RhdHVzX2Nzcz8+IiBzdHlsZT0id2lkdGg6IDw/PSRzdGF0dXNfYmFyPz4lIiBhcmlhLXZhbHVlbWF4PSIxMDAiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVub3c9IjYwIiByb2xlPSJwcm9ncmVzc2JhciI+DQo8c3BhbiBjbGFzcz0ic3Itb25seSI+NjAlIENvbXBsZXRlICh3YXJuaW5nKTwvc3Bhbj4NCjxjZW50ZXI+PD89JHN0YXR1c19uYW1lPz4gPD89JGRhdGVfc3RhdHVzOz8+PC9jZW50ZXI+DQo8L2Rpdj4NCg0KDQoNCg0KDQo8L2Rpdj4NCjwvZGl2Pg0KCSA8ZGl2IGNsYXNzPSJjb2wtbWQtMiI+DQogICAgPGlucHV0IGlkPSJpbnB1dC0yYyIgdmFsdWU9Ijw/PSRldmE7Pz4iICBjbGFzcz0icmF0aW5nIiBtaW49IjAiIG1heD0iNSIgc3RlcD0iMC41IiBkYXRhLXNpemU9InNtIg0KICAgICAgICAgICBkYXRhLXN5bWJvbD0iJiN4ZjAwNTsiIGRhdGEtZ2x5cGhpY29uPSJmYWxzZSIgZGF0YS1yYXRpbmctY2xhc3M9InJhdGluZy1mYSIgPg0KDQoNCjwvZGl2Pg0KDQoNCjw/DQoNCiANCiAkZnJtID0gbmV3IEhUTUxfRm9ybSgpOw0KJGZybVN0ciA9ICRmcm0tPnN0YXJ0Rm9ybSgnJywgJ3Bvc3QnLCAnZm9ybS1jb250cm9sJywNCmFycmF5KCdjbGFzcyc9Pidmb3JtLWNvbnRyb2wgZm9ybS13aGl0ZScsICdvbnN1Ym1pdCc9PidyZXR1cm4gY2hlY2tCZWZvcmVTdWJtaXQodGhpcyknLCdlbmN0eXBlJz0+J211bHRpcGFydC9mb3JtLWRhdGEnKSApIC4gUEhQX0VPTCAuDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KCSRmcm0tPnN0YXJ0RGl2KCdyb3cnKSAuIAkJCQ0KCQ0KICAgICRmcm0tPnN0YXJ0RGl2KCdjb2wtbWQtMTAnKSAuIAkJDQogICAgJGZybS0+c3RhcnREaXYoJ3BhbmVsJykgLiANCiAgICAkZnJtLT5zdGFydERpdigncGFuZWwtaGVhZGVyIHBhbmVsLWNvbnRyb2xzIG5vLXByaW50JykgLiANCgkNCgkkZnJtLT5zdGFydERpdigndGltZWxpbmUtY29udGVudCcpIC4NCg0KDQoNCgkNCiAgICAkZnJtLT5zdGFydERpdigncHVsbC1yaWdodCcpIC4NCg0KICAgICRmcm0tPnN0YXJ0RGl2KCdwdWxsLWxlZnQnKSAuDQogICAgJGZybS0+c3RhcnREaXYyKCd0aW1lbGluZS1kYXknLCcnKSAuDQoJJGZybS0+ZW5kRGl2KCkuDQogICAgJGZybS0+c3RhcnREaXYoJ3B1bGwtbGVmdCcpIC4NCiAgICAkZnJtLT5zdGFydERpdjIoJ3RpbWVsaW5lLWRheScsJycpIC4NCiAgICAkZnJtLT5lbmREaXYoKS4NCiAgICAkZnJtLT5zdGFydERpdjIoJ3RpbWVsaW5lLW1vbnRoIGMtZ3JheScsJGRhdGV0aW1lKSAuDQoJJGZybS0+ZW5kRGl2KCkuDQoJJGZybS0+ZW5kRGl2KCkuDQoJJGZybS0+ZW5kRGl2KCkuDQoJJGZybS0+ZW5kRGl2KCkuDQoNCg0KDQogDQogICAgJGZybS0+c3RhcnREaXYoJ2Zvcm0tZ3JvdXAnKSAuDQogICAgJGZybS0+c3RhcnREaXYoJ3BhbmVsLWNvbnRlbnQnKSAuIA0KICAgIC8vKnJvdyovLzENCgkNCiAgICAkZnJtLT5zdGFydERpdigncm93IG0tdC0xMCcpIC4gDQoNCiAgICAkZnJtLT5zdGFydERpdignY29sLW1kLTMnKSAuIA0KDQokZnJtLT5zdGFydEhoKCdoNScsJ3B1bGwtbGVmdCcsJyAmIzE1OTM7JiMxNjA2OyYjMTYwODsmIzE1NzU7JiMxNjA2OyAmIzE1NzU7JiMxNjA1OyYjMTU4NTsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNjA1OyYjMTYwNDsgOicuJHRpdGxlX2opIC4gDQokZnJtLT5zdGFydERpdjIoJ3RpbWVsaW5lLWRheScsJycpIC4NCiRmcm0tPmVuZEgoJ2g1JykgLiAgICANCiRmcm0tPmVuZERpdigpLg0KIA0KCSRmcm0tPnN0YXJ0RGl2KCdjb2wtbWQtMicpIC4gDQoJJGZybS0+c3RhcnRIaCgnaDUnLCdwdWxsLWxlZnQnLCcgJiMxNTc4OyYjMTU3NTsmIzE1ODU7JiMxNjEwOyYjMTU4MjsgJiMxNTc2OyYjMTU4MzsmIzE1NzU7JiMxNjEwOyYjMTU3NzsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNjA1OyYjMTYwNDsgOiAnLiRzX2RhdGUpIC4gDQokZnJtLT5lbmRIKCdoNScpIC4gICAgDQoNCiAgICAkZnJtLT5lbmREaXYoKS4NCgkgCSRmcm0tPnN0YXJ0RGl2KCdjb2wtbWQtMicpIC4gDQoJJGZybS0+c3RhcnRIaCgnaDUnLCdwdWxsLWxlZnQnLCcgJiMxNTc4OyYjMTU3NTsmIzE1ODU7JiMxNjEwOyYjMTU4MjsgJiMxNjA2OyYjMTYwNzsmIzE1NzU7JiMxNjEwOyYjMTYwNzsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNjA1OyYjMTYwNDsgOiAnLiRlX2RhdGUpIC4gDQogICAgJGZybS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogCSRmcm0tPnN0YXJ0RGl2KCdjb2wtbWQtMicpIC4gDQoJJGZybS0+c3RhcnRIaCgnaDUnLCdwdWxsLWxlZnQnLCcgJiMxNjA1OyYjMTU4OTsmIzE1ODM7JiMxNTg1OyAmIzE1NzU7JiMxNjA1OyYjMTU4NTsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNjA1OyYjMTYwNDsgOiAnLiRuYW1lX3VzZXJyKSAuIA0KICAgICRmcm0tPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KDQoNCgkgICAgJGZybS0+c3RhcnREaXYoJ2NvbC1tZC0yJykgLiANCiRmcm0tPnN0YXJ0SGgoJ2g1JywncHVsbC1sZWZ0JywnICAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE2MDg7JiMxNTkyOyYjMTYwMTsgOiAnLiRuYW1lX2VtcGxveWVlKSAuIA0KJGZybS0+c3RhcnREaXYyKCd0aW1lbGluZS1kYXknLCcnKSAuDQokZnJtLT5lbmRIKCdoNScpIC4gICAgDQokZnJtLT5lbmREaXYoKS4NCiRmcm0tPmVuZERpdigpLg0KDQoNCg0KICAgICRmcm0tPnN0YXJ0RGl2KCdyb3cgbS10LTEwJykgLiANCgkvL2NvbHVtbiMxICAgDQoNCg0KCS8vY29sdW1uIzINCiAgICAkZnJtLT5zdGFydERpdignY29sLW1kLTMnKSAuIA0KJGZybS0+c3RhcnRIaCgnaDUnLCdwdWxsLWxlZnQnLCcgICYjMTU5MzsmIzE2MDY7JiMxNjA4OyYjMTU3NTsmIzE2MDY7ICYjMTYwMTsmIzE1NzU7JiMxNTc4OyYjMTYwODsmIzE1ODU7JiMxNjA3OyA6ICcuJHRpdGxlX29yZCkgLiANCiRmcm0tPnN0YXJ0RGl2MigndGltZWxpbmUtZGF5JywnJykgLg0KJGZybS0+ZW5kSCgnaDUnKSAuICAgIA0KJGZybS0+ZW5kRGl2KCkuDQogICAgJGZybS0+c3RhcnREaXYoJ2NvbC1tZC0yJykgLiANCiRmcm0tPnN0YXJ0SGgoJ2g1JywncHVsbC1sZWZ0JywnICAmIzE1ODU7JiMxNjAyOyYjMTYwNTsgJiMxNTc1OyYjMTYwNDsmIzE2MDE7JiMxNTc1OyYjMTU3ODsmIzE2MDg7JiMxNTg1OyYjMTYwNzsgOiAnLiRpZF9yZXEpIC4gDQokZnJtLT5zdGFydERpdjIoJ3RpbWVsaW5lLWRheScsJycpIC4NCiRmcm0tPmVuZEgoJ2g1JykgLiAgICANCiRmcm0tPmVuZERpdigpLg0KDQokZnJtLT5zdGFydERpdignY29sLW1kLTInKSAuIA0KCSRmcm0tPnN0YXJ0SGgoJ2g1JywncHVsbC1sZWZ0JywnICYjMTU3NTsmIzE1ODc7JiMxNjA1OyAmIzE1NzU7JiMxNjA0OyYjMTU5MzsmIzE2MDU7JiMxNjEwOyYjMTYwNDsgOiAnLiRuYW1lX2NsaWVudCkgLiANCiRmcm0tPmVuZEgoJ2g1JykgLiAgICANCg0KICAgICRmcm0tPmVuZERpdigpLg0KCSAJJGZybS0+c3RhcnREaXYoJ2NvbC1tZC0yJykgLiANCgkkZnJtLT5zdGFydEhoKCdoNScsJ3B1bGwtbGVmdCcsJyAmIzE1Nzg7JiMxNTc1OyYjMTU4NTsmIzE2MTA7JiMxNTgyOyAmIzE1Nzg7JiMxNTg3OyYjMTYwNDsmIzE2MTA7JiMxNjA1OyAmIzE1NzU7JiMxNjA0OyYjMTU5MzsmIzE2MDU7JiMxNjA0OyA6ICcuJGVfZGF0ZV9jKSAuIA0KICAgICRmcm0tPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KCQ0KDQoJDQoJCSAgICRmcm0tPnN0YXJ0RGl2KCdjb2wtbWQtMycpIC4gDQogICAgJGZybS0+YWRkSW5wdXQoJ3N1Ym1pdCcsICdzdGFydC1qb2InLCAnJiMxNTc2OyYjMTU4MzsmIzE1NzE7ICYjMTU3NTsmIzE2MDQ7JiMxNTkzOyYjMTYwNTsmIzE2MDQ7Jy4kZGF0ZV9wZW5kLCBhcnJheSgnY2xhc3MnPT4nYnRuIGJ0bi1lbWJvc3NlZCBidG4td2FybmluZycsJGpfcD0+JGpfcCkpIC4NCiAgICAkZnJtLT5lbmREaXYoKS4NCiAgICAkZnJtLT5lbmREaXYoKS4gICANCgkNCg0KDQoJDQoJDQogICAgJGZybS0+ZW5kRGl2KCkuDQoNCg0KDQoJDQogICAkZnJtLT5zdGFydERpdignY29sLW1kLTEyJykgLg0KICAgICRmcm0tPmFkZExhYmVsRm9yKCdmaXJzdE5hbWUnLCcmIzE1NzU7JiMxNjA0OyYjMTU3ODsmIzE2MDE7JiMxNTc1OyYjMTU4OTsmIzE2MTA7JiMxNjA0OycpIC4NCiAgIA0KCSRmcm0tPnN0YXJ0UCgncCcsJG5vdGVzKS4NCiAgICAkZnJtLT5lbmRUYWcoJy9wJykuDQogICAgJGZybS0+ZW5kRGl2KCkuDQoNCgkgICAgJGZybS0+c3RhcnREaXYoJ3B1bGwtcmlnaHQnKSAuDQoNCiAgICAkZnJtLT5zdGFydERpdigncHVsbC1sZWZ0JykgLg0KICAgICRmcm0tPnN0YXJ0RGl2MigndGltZWxpbmUtZGF5JywnJykgLg0KCSRmcm0tPmVuZERpdigpLg0KICAgICRmcm0tPnN0YXJ0RGl2KCdwdWxsLWxlZnQnKSAuDQogICAgJGZybS0+c3RhcnREaXYyKCd0aW1lbGluZS1kYXknLCRlZGl0MikgLg0KICAgICRmcm0tPmVuZERpdigpLg0KICAgIA0KICAgICRmcm0tPmltZ19ocmVmKCd1cGxvYWRzL2pvYm9yZGVycy8nLCRmaWxlX2osJG5hbWVfZmlsZSwkZGlzYWJsZWQxKSAuDQogICAgJGZybS0+c3RhcnRJKCdpY29uLWNsb3VkLXVwbG9hZCcpIC4NCiAgICAkZnJtLT5lbmRJKCkgLg0KCSRmcm0tPmVuZFRhZygnL2J1dHRvbicpLg0KDQoJJGZybS0+ZW5kRGl2KCkuDQoJJGZybS0+ZW5kRGl2KCkuDQoJJGZybS0+ZW5kRGl2KCkuDQoJDQogICAgICRmcm0tPmVuZERpdigpLg0KCSANCiANCg0KCQ0KCQ0KICAgIA0KCSAgICAkZnJtLT5zdGFydERpdigncm93IG0tdC0xMCcpIC4gDQoNCgkvL2NvbHVtbiMzDQoNCgkNCg0KCS8vY29sdW1uIzMNCgkvL2NvbHVtbiMzDQogICAgJGZybS0+ZW5kRGl2KCkuDQoJDQoJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9ORVcgUEFORUwvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCiAgICAkZnJtLT5lbmREaXYoKS4NCiAgICAkZnJtLT5lbmREaXYoKS4NCgkkZnJtLT5lbmREaXYoKS4NCiAgICAkZnJtLT5lbmREaXYoKS4NCiAgICAkZnJtLT5lbmREaXYoKS4NCiAgICAkZnJtLT5lbmREaXYoKS4NCg0KCQ0KCS8vLy8vLy8vLy8vLy8vLy8NCg0KCS8vLy8vLy8vLy8vLy8vDQokZnJtLT5lbmRGb3JtKCk7DQovLyBmaW5hbGx5LCBvdXRwdXQgdGhlIGxvbmcgc3RyaW5nDQplY2hvICRmcm1TdHI7DQokc3FsPSBteXNxbF9xdWVyeSgic2VsZWN0ICogZnJvbSAgIGpvYl9vcmRlcnNfZGV0YWlscyB3aGVyZSBpZF9qb2Jfb3JkZXJzPSckaWRfdmFyJyAgT1JERVIgQlkgSWQgQVNDICIpIG9yIGRpZSgiTXlTUUwgTG9naW4gRXJyb3I6ICIubXlzcWxfZXJyb3IoKSk7DQoNCiRmcm0gPSBuZXcgSFRNTF9Gb3JtKCk7DQokZnJtU3RyID0gJGZybS0+c3RhcnRGb3JtKCcnLCAncG9zdCcsICdmb3JtLWNvbnRyb2wnLA0KYXJyYXkoJ2NsYXNzJz0+J2Zvcm0tY29udHJvbCBmb3JtLXdoaXRlJywgJ29uc3VibWl0Jz0+J3JldHVybiBjaGVja0JlZm9yZVN1Ym1pdCh0aGlzKScsJ2VuY3R5cGUnPT4nbXVsdGlwYXJ0L2Zvcm0tZGF0YScpICkgLiBQSFBfRU9MIC4NCiRmcm0tPnN0YXJ0RGl2KCdyb3cnKSAuDQokZnJtLT5zdGFydERpdignY29sLWxnLTEyJykgLg0KJGZybS0+c3RhcnRTZWN0aW9uKCd0aW1lbGluZScpIC4NCg0KJGZybS0+ZW5kRm9ybSgpOw0KLy8gZmluYWxseSwgb3V0cHV0IHRoZSBsb25nIHN0cmluZw0KZWNobyAkZnJtU3RyOw0KCXdoaWxlKCRyb3dzID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHNxbCkpIHsNCgkJDQogJG5vdGVzPSRyb3dzWydub3RlcyddOw0KICRuYW1lX3VzZXI9TmFtZVJvdzEoJHJvd3NbJ2lkX3VzZXInXSwibG9naW4iLCJuYW1lIik7DQogJG5hbWVfZW1wPU5hbWVSb3cxKCRyb3dzWydpZF9lbXAnXSwibG9naW4iLCJuYW1lIik7DQogJG5fc3RhdHVzPU5hbWVSb3cxKCRyb3dzWydzdGF0dXMnXSwic3lzc3RhdHVzIiwibmFtZSIpOw0KICRjc3Nfc3RhdHVzPU5hbWVSb3cxKCRyb3dzWydzdGF0dXMnXSwic3lzc3RhdHVzIiwiY3NzIik7DQogDQogJGRhdGV0aW1lPSRyb3dzWydkYXRldGltZSddOw0KICRmaWxlPSRyb3dzWydmaWxlJ107DQogJGRpc2FibGVkPSIiOw0KICRuYW1lX2ZpbGU9IiYjMTU3NTsmIzE2MDQ7JiMxNjA1OyYjMTYwNDsmIzE2MDE7ICYjMTU3NTsmIzE2MDQ7JiMxNjA1OyYjMTU4NTsmIzE2MDE7JiMxNjAyOyI7DQppZigkZmlsZT09IiIpDQogJGRpc2FibGVkPSJkaXNhYmxlZCI7DQoNCmlmKCRmaWxlPT0iIikNCiAkbmFtZV9maWxlPSImIzE2MDQ7JiMxNTc1OyYjMTYxMDsmIzE2MDg7JiMxNTgwOyYjMTU4MzsgJiMxNjA1OyYjMTU4NTsmIzE2MDE7JiMxNjAyOyYjMTU3NTsmIzE1Nzg7IjsNCg0KJGZybSA9IG5ldyBIVE1MX0Zvcm0oKTsNCiRmcm1TdHIgPSAkZnJtLT5zdGFydEZvcm0oJycsICdwb3N0JywgJ2Zvcm0tY29udHJvbCcsDQphcnJheSgnY2xhc3MnPT4nZm9ybS1jb250cm9sIGZvcm0td2hpdGUnLCAnb25zdWJtaXQnPT4ncmV0dXJuIGNoZWNrQmVmb3JlU3VibWl0KHRoaXMpJywnZW5jdHlwZSc9PidtdWx0aXBhcnQvZm9ybS1kYXRhJykgKSAuIFBIUF9FT0wgLg0KDQoNCg0KJGZybS0+c3RhcnREaXYoJ3RpbWVsaW5lLWJsb2NrJykgLg0KJGZybS0+aWNvbnllbGxvdygkY3NzX3N0YXR1cykgLg0KJGZybS0+c3RhcnRJKCcnKSAuDQokZnJtLT5lbmRJKCkgLg0KJGZybS0+ZW5kRGl2KCkuDQokZnJtLT5zdGFydERpdigndGltZWxpbmUtY29udGVudCcpIC4NCiRmcm0tPnN0YXJ0RGl2KCd0aW1lbGluZS1oZWFkaW5nIGNsZWFyZml4JykgLg0KJGZybS0+c3RhcnRIaCgnaDUnLCdwdWxsLWxlZnQnLCcmIzE1ODk7JiMxNTgxOyYjMTU3NTsmIzE1NzY7ICYjMTU3NTsmIzE2MDQ7JiMxNTg1OyYjMTU4MzsgLycpIC4gDQokZnJtLT5zdGFydERpdjIoJ3RpbWVsaW5lLWRheScsJG5hbWVfdXNlcikgLg0KJGZybS0+ZW5kSCgnaDUnKSAuIA0KCQ0KDQoNCgkNCiAgICAkZnJtLT5zdGFydERpdigncHVsbC1yaWdodCcpIC4NCg0KICAgICRmcm0tPnN0YXJ0RGl2KCdwdWxsLWxlZnQnKSAuDQogICAgJGZybS0+c3RhcnREaXYyKCd0aW1lbGluZS1kYXknLCcnKSAuDQoJJGZybS0+ZW5kRGl2KCkuDQogICAgJGZybS0+c3RhcnREaXYoJ3B1bGwtbGVmdCcpIC4NCiAgICAkZnJtLT5zdGFydERpdjIoJ3RpbWVsaW5lLWRheScsJycpIC4NCiAgICAkZnJtLT5lbmREaXYoKS4NCiAgICAkZnJtLT5zdGFydERpdjIoJ3RpbWVsaW5lLW1vbnRoIGMtZ3JheScsJGRhdGV0aW1lKSAuDQoJJGZybS0+ZW5kRGl2KCkuDQoJJGZybS0+ZW5kRGl2KCkuDQoJJGZybS0+ZW5kRGl2KCkuDQoJJGZybS0+ZW5kRGl2KCkuDQoNCiAgICRmcm0tPnN0YXJ0RGl2KCdjb2wtbWQtMTInKSAuIA0KCSRmcm0tPnN0YXJ0UCgncCcsJG5vdGVzKS4NCiAgICAkZnJtLT5lbmRUYWcoJy9wJykuDQogICAgJGZybS0+ZW5kRGl2KCkuDQoNCgkgICAgJGZybS0+c3RhcnREaXYoJ3B1bGwtcmlnaHQnKSAuDQoNCiAgICAkZnJtLT5zdGFydERpdigncHVsbC1sZWZ0JykgLg0KICAgICRmcm0tPnN0YXJ0RGl2MigndGltZWxpbmUtZGF5JywnJykgLg0KCSRmcm0tPmVuZERpdigpLg0KICAgICRmcm0tPnN0YXJ0RGl2KCdwdWxsLWxlZnQnKSAuDQogICAgJGZybS0+c3RhcnREaXYyKCd0aW1lbGluZS1kYXknLCRlZGl0MikgLg0KICAgICRmcm0tPmVuZERpdigpLg0KCSRmcm0tPmltZ19ocmVmKCd1cGxvYWRzL3JlcXVlc3RzLycsJGZpbGUsJG5hbWVfZmlsZSwkZGlzYWJsZWQpIC4NCgkkZnJtLT5zdGFydEkoJ2ljb24tY2xvdWQtdXBsb2FkJykgLg0KICAgICRmcm0tPmVuZEkoKSAuDQoJJGZybS0+ZW5kVGFnKCcvYnV0dG9uJykuDQoNCgkkZnJtLT5lbmREaXYoKS4NCgkkZnJtLT5lbmREaXYoKS4NCgkkZnJtLT5lbmREaXYoKS4NCiAgICAkZnJtLT5zdGFydERpdigndGltZWxpbmUtaGVhZGluZyBjbGVhcmZpeCcpIC4NCiAgICAkZnJtLT5zdGFydEhoKCdoNScsJ3B1bGwtbGVmdCcsJycpIC4gDQogICAgJGZybS0+c3RhcnREaXYyKCdwYW5lbC1mb290ZXIgYmctJy4kY3NzX3N0YXR1cywkbl9zdGF0dXMpIC4NCiAgICAkZnJtLT5lbmRIKCdoNScpIC4gCQ0KICAgICRmcm0tPmVuZERpdigpLg0KCSANCiAgDQoJIA0KICAgJGZybS0+ZW5kRGl2KCkuDQogICANCiAgICRmcm0tPmVuZERpdigpLg0KICAgDQogICAkZnJtLT5lbmREaXYoKS4NCiAgICRmcm0tPmVuZEZvcm0oKTsNCi8vIGZpbmFsbHksIG91dHB1dCB0aGUgbG9uZyBzdHJpbmcNCmVjaG8gJGZybVN0cjsNCgl9DQoNCgkNCiAgICAgICAgDQoNCiANCg0KICAgICAgIGlmKCRzdGF0dXNfaiE9IjI0IiYkaWRfdXNlcnI9PSRpZF91c2VyX29uIG9yICRpZF9ncm91cF9zPT0iMTMiICl7DQoNCmlmKCRzdGF0dXNfaiE9IjI0IiYkaWRfZW1wcD09JGlkX3VzZXJfb24pew0KDQogICAkZnJtID0gbmV3IEhUTUxfRm9ybSgpOw0KJGZybVN0cjUgPSAkZnJtLT5zdGFydEZvcm0oJycsICdwb3N0JywgJ2Zvcm0tY29udHJvbCcsDQphcnJheSgnY2xhc3MnPT4nZm9ybS1jb250cm9sIGZvcm0td2hpdGUnLCAnb25zdWJtaXQnPT4ncmV0dXJuIGNoZWNrQmVmb3JlU3VibWl0KHRoaXMpJywnZW5jdHlwZSc9PidtdWx0aXBhcnQvZm9ybS1kYXRhJykgKSAuIFBIUF9FT0wgLg0KDQokZnJtLT5zdGFydERpdigndGltZWxpbmUtY29udGVudCcpIC4NCiRmcm0tPnN0YXJ0RGl2KCd0aW1lbGluZS1oZWFkaW5nIGNsZWFyZml4JykgLg0KICAgICRmcm0tPnN0YXJ0SGgoJ2gyJywncHVsbC1sZWZ0JywnJykgLiANCiAgICAkZnJtLT5lbmRIKCdoMicpIC4gDQogICAgICAgJGZybS0+YWRkSW5wdXQoJ2J1dHRvbicgLCdyZXBsYXktaicsICcmIzE1NzU7JiMxNTkwOyYjMTU3NTsmIzE2MDE7JiMxNjA3OyAmIzE1ODU7JiMxNTgzOycsIGFycmF5KCdkYXRhLXRhcmdldCc9PicjdGVzdF9yMicsJ2NsYXNzJz0+J21vcnBoYnV0dG9uIGJ0biBidG4tZW1ib3NzZWQgYnRuLWluZm8nKSApIC4gDQogICAgJGZybS0+YWRkSW5wdXQoJ2J1dHRvbicsICdyZXBsYXktaicsICcmIzE1NzU7JiMxNTkwOyYjMTU3NTsmIzE2MDE7JiMxNjA3OyAmIzE1ODU7JiMxNTgzOycsIGFycmF5KCdkYXRhLXRhcmdldCc9PicjdGVzdF9yJywnY2xhc3MnPT4nbW9ycGhidXR0b24gYnRuIGJ0bi1lbWJvc3NlZCBidG4tc3VjY2VzcycpICkgLiANCg0KCSRmcm0tPmFkZElucHV0KCdidXR0b24nLCAnY2xvc2UtaicsICcmIzE1NzU7JiMxNTk0OyYjMTYwNDsmIzE1NzU7JiMxNjAyOyAmIzE1NzU7JiMxNjA1OyYjMTU4NTsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNjA1OyYjMTYwNDsnLCBhcnJheSgnZGF0YS10YXJnZXQnPT4nI3Rlc3RfcjMnLCdjbGFzcyc9Pidtb3JwaGJ1dHRvbiBidG4gYnRuLWVtYm9zc2VkIGJ0bi1kYW5nZXInKSApIC4gDQoNCiAgICRmcm0tPmVuZERpdigpLg0KICAgJGZybS0+ZW5kRGl2KCkuDQoNCg0KDQogICAkZnJtLT5lbmRTZWN0aW9uKCkuDQogICAkZnJtLT5lbmREaXYoKS4NCiAgICRmcm0tPmVuZERpdigpLg0KDQokZnJtLT5lbmRGb3JtKCk7DQovLyBmaW5hbGx5LCBvdXRwdXQgdGhlIGxvbmcgc3RyaW5nDQplY2hvICRmcm1TdHI1Ow0KICANCn1lbHNlew0KICRmcm0gPSBuZXcgSFRNTF9Gb3JtKCk7DQokZnJtU3RyNSA9ICRmcm0tPnN0YXJ0Rm9ybSgnJywgJ3Bvc3QnLCAnZm9ybS1jb250cm9sJywNCmFycmF5KCdjbGFzcyc9Pidmb3JtLWNvbnRyb2wgZm9ybS13aGl0ZScsICdvbnN1Ym1pdCc9PidyZXR1cm4gY2hlY2tCZWZvcmVTdWJtaXQodGhpcyknLCdlbmN0eXBlJz0+J211bHRpcGFydC9mb3JtLWRhdGEnKSApIC4gUEhQX0VPTCAuDQoNCiRmcm0tPnN0YXJ0RGl2KCd0aW1lbGluZS1jb250ZW50JykgLg0KJGZybS0+c3RhcnREaXYoJ3RpbWVsaW5lLWhlYWRpbmcgY2xlYXJmaXgnKSAuDQogICAgJGZybS0+c3RhcnRIaCgnaDInLCdwdWxsLWxlZnQnLCcnKSAuIA0KICAgICRmcm0tPmVuZEgoJ2gyJykgLiANCiAgICAgICAkZnJtLT5hZGRJbnB1dCgnYnV0dG9uJyAsJ3JlcGxheS1qJywgJyYjMTU3NTsmIzE1OTA7JiMxNTc1OyYjMTYwMTsmIzE2MDc7ICYjMTU4NTsmIzE1ODM7JywgYXJyYXkoJ2RhdGEtdGFyZ2V0Jz0+JyN0ZXN0X3IyJywnY2xhc3MnPT4nbW9ycGhidXR0b24gYnRuIGJ0bi1lbWJvc3NlZCBidG4taW5mbycpICkgLiANCg0KCSRmcm0tPmFkZElucHV0KCdidXR0b24nLCAnY2xvc2UtaicsICcmIzE1NzU7JiMxNTk0OyYjMTYwNDsmIzE1NzU7JiMxNjAyOyAmIzE1NzU7JiMxNjA1OyYjMTU4NTsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNjA1OyYjMTYwNDsnLCBhcnJheSgnZGF0YS10YXJnZXQnPT4nI3Rlc3RfcjMnLCdjbGFzcyc9Pidtb3JwaGJ1dHRvbiBidG4gYnRuLWVtYm9zc2VkIGJ0bi1kYW5nZXInKSApIC4gDQoNCiAgICRmcm0tPmVuZERpdigpLg0KICAgJGZybS0+ZW5kRGl2KCkuDQoNCg0KDQogICAkZnJtLT5lbmRTZWN0aW9uKCkuDQogICAkZnJtLT5lbmREaXYoKS4NCiAgICRmcm0tPmVuZERpdigpLg0KDQokZnJtLT5lbmRGb3JtKCk7DQovLyBmaW5hbGx5LCBvdXRwdXQgdGhlIGxvbmcgc3RyaW5nDQplY2hvICRmcm1TdHI1Ow0KDQp9DQoNCg0KDQogfSANCiBlbHNlaWYoJHN0YXR1c19qIT0iMjQiJiRpZF9lbXBwPT0kaWRfdXNlcl9vbil7DQogICAkZnJtID0gbmV3IEhUTUxfRm9ybSgpOw0KJGZybVN0cjUgPSAkZnJtLT5zdGFydEZvcm0oJycsICdwb3N0JywgJ2Zvcm0tY29udHJvbCcsDQphcnJheSgnY2xhc3MnPT4nZm9ybS1jb250cm9sIGZvcm0td2hpdGUnLCAnb25zdWJtaXQnPT4ncmV0dXJuIGNoZWNrQmVmb3JlU3VibWl0KHRoaXMpJywnZW5jdHlwZSc9PidtdWx0aXBhcnQvZm9ybS1kYXRhJykgKSAuIFBIUF9FT0wgLg0KDQokZnJtLT5zdGFydERpdigndGltZWxpbmUtY29udGVudCcpIC4NCiRmcm0tPnN0YXJ0RGl2KCd0aW1lbGluZS1oZWFkaW5nIGNsZWFyZml4JykgLg0KICAgICRmcm0tPnN0YXJ0SGgoJ2gyJywncHVsbC1sZWZ0JywnJykgLiANCiAgICAkZnJtLT5lbmRIKCdoMicpIC4gDQogICAgJGZybS0+YWRkSW5wdXQoJ2J1dHRvbicsICdyZXBsYXktaicsICcmIzE1NzU7JiMxNTkwOyYjMTU3NTsmIzE2MDE7JiMxNjA3OyAmIzE1ODU7JiMxNTgzOycsIGFycmF5KCdkYXRhLXRhcmdldCc9PicjdGVzdF9yJywnY2xhc3MnPT4nbW9ycGhidXR0b24gYnRuIGJ0bi1lbWJvc3NlZCBidG4tc3VjY2VzcycpICkgLiANCg0KICAgICAgICANCiAgICRmcm0tPmVuZERpdigpLg0KICAgJGZybS0+ZW5kRGl2KCkuDQoNCg0KDQogICAkZnJtLT5lbmRTZWN0aW9uKCkuDQogICAkZnJtLT5lbmREaXYoKS4NCiAgICRmcm0tPmVuZERpdigpLg0KDQokZnJtLT5lbmRGb3JtKCk7DQovLyBmaW5hbGx5LCBvdXRwdXQgdGhlIGxvbmcgc3RyaW5nDQplY2hvICRmcm1TdHI1Ow0KDQogfQ0KICAgICAgIGVsc2VpZigkc3RhdHVzX2o9PSIyNCIpew0KIA0KDQogICRmcm0gPSBuZXcgSFRNTF9Gb3JtKCk7DQokZnJtU3RyNSA9ICRmcm0tPnN0YXJ0Rm9ybSgnJywgJ3Bvc3QnLCAnZm9ybS1jb250cm9sJywNCmFycmF5KCdjbGFzcyc9Pidmb3JtLWNvbnRyb2wgZm9ybS13aGl0ZScsICdvbnN1Ym1pdCc9PidyZXR1cm4gY2hlY2tCZWZvcmVTdWJtaXQodGhpcyknLCdlbmN0eXBlJz0+J211bHRpcGFydC9mb3JtLWRhdGEnKSApIC4gUEhQX0VPTCAuDQoNCiRmcm0tPnN0YXJ0RGl2KCd0aW1lbGluZS1jb250ZW50JykgLg0KJGZybS0+c3RhcnREaXYoJ3RpbWVsaW5lLWhlYWRpbmcgY2xlYXJmaXgnKSAuDQogICAgJGZybS0+c3RhcnRIaCgnaDInLCdwdWxsLWxlZnQnLCcnKSAuIA0KICAgICRmcm0tPmVuZEgoJ2gyJykgLiANCiAgICAgJGZybS0+YWRkSW5wdXQoJ2J1dHRvbicsICdyZWZ1c2VkLWFwcGFwcCcsICcmIzE1Nzg7JiMxNjA1OyAmIzE1NzU7JiMxNTk0OyYjMTYwNDsmIzE1NzU7JiMxNjAyOyAmIzE1NzU7JiMxNjA1OyYjMTU4NTsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNjA1OyYjMTYwNDsnLCBhcnJheSgnY2xhc3MnPT4nbW9ycGhidXR0b24gYnRuIGJ0bi1lbWJvc3NlZCBidG4tZGFuZ2VyIG0tYi0xMCBtLXItMCcsJ2Rpc2FibGVkJz0+J2Rpc2FibGVkJykgKS4NCiAgICAgICAgDQogICAkZnJtLT5lbmREaXYoKS4NCiAgICRmcm0tPmVuZERpdigpLg0KDQoNCg0KICAgJGZybS0+ZW5kU2VjdGlvbigpLg0KICAgJGZybS0+ZW5kRGl2KCkuDQogICAkZnJtLT5lbmREaXYoKS4NCg0KJGZybS0+ZW5kRm9ybSgpOw0KLy8gZmluYWxseSwgb3V0cHV0IHRoZSBsb25nIHN0cmluZw0KZWNobyAkZnJtU3RyNTsNCg0KDQogDQogDQogfQ0KDQoNCiANCiANCiANCiANCiAkZnJtMSA9IG5ldyBIVE1MX0Zvcm0oKTsNCiRmcm0xU3RyID0gJGZybTEtPnN0YXJ0Rm9ybTMoJyMnLCAncG9zdCcsICdmb3JtLWNvbnRyb2wnLA0KYXJyYXkoJ2NsYXNzJz0+J2Zvcm0tY29udHJvbCBmb3JtLXdoaXRlJywnb25zdWJtaXQnPT4ncmV0dXJuIGNoZWNrQmVmb3JlU3VibWl0KHRoaXMpJykgKSAuIFBIUF9FT0wgLg0KJGZybTEtPnN0YXJ0RGl2KCdtb3JwaGJ1dHRvbi1jb250ZW50JywgYXJyYXkoJ2lkJz0+J3Rlc3RfcicpKSAuIA0KICAgICRmcm0xLT5zdGFydERpdignImJveCcpIC4gDQoJJGZybTEtPnN0YXJ0Y3NzKCdidXR0b24nLCBhcnJheSgnY2xhc3MnPT4nbW9ycGhidXR0b24tY2xvc2UnKSApIC4gIA0KICAgICRmcm0xLT5zdGFydGNzcygnc3BhbicsIGFycmF5KCdjbGFzcyc9Pidtb3JwaGJ1dHRvbi1jbG9zZScpICkgLiAgDQogICAgJGZybTEtPnN0YXJ0Y3NzKCdzcGFuJywgYXJyYXkoJ2NsYXNzJz0+J2dseXBoaWNvbiBnbHlwaGljb24tcmVtb3ZlJykgKSAuICANCiAgICAkZnJtMS0+ZW5kY3NzKCdzcGFuJywgYXJyYXkoJ2NsYXNzJz0+J2dseXBoaWNvbiBnbHlwaGljb24tcmVtb3ZlJykgKSAuICANCiAgICAkZnJtMS0+ZW5kY3NzKCdzcGFuJykgIC4gIA0KICAgICRmcm0xLT5lbmRjc3MoJ2J1dHRvbicpIC4gIA0KDQogICAgJGZybTEtPnN0YXJ0RGl2KCdmb3JtLWdyb3VwJykgLg0KCSRmcm0xLT5wYW5lbCgnJykgLiANCiAgICAkZnJtMS0+c3RhcnREaXYoJ3BhbmVsLWNvbnRlbnQnKSAuIA0KCSAkZnJtMS0+c3RhcnRIKCdoMycsJyYjMTU3NTsmIzE1OTA7JiMxNTc1OyYjMTYwMTsmIzE2MDc7ICYjMTU4NTsmIzE1ODM7JykgLiANCgkkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQoJJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgIC8vKnJvdyovLzENCiAgICAkZnJtMS0+c3RhcnREaXYoJ3BhbmVsLWNvbnRlbnQnKSAuIA0KICAgICRmcm0xLT5zdGFydERpdigncm93IG0tdC0xMCcpIC4gDQoJICAgICRmcm0xLT5zdGFydERpdignY29sLW1kLTYnKSAuIA0KCQkkZnJtMS0+YWRkTGFiZWxGb3IoJ2ZpcnN0TmFtZScsJyYjMTU3NTsmIzE1ODI7JiMxNTc4OyYjMTU3NTsmIzE1ODU7ICYjMTU3NTsmIzE2MDQ7JiMxNTgxOyYjMTU3NTsmIzE2MDQ7JiMxNTc3OycpIC4NCgkkZnJtLT5hZGRTZWxlY3RMaXN0NSgnc3RhdHVzJywnc3lzc3RhdHVzJywnbmFtZScsJ0lkJywnY2F0JywnMScsJ2Zvcm0tY29udHJvbCcsYXJyYXkoJ2lkJz0+J3BhcmVudF9jYXQnKSkgLiANCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KDQogICAgJGZybTEtPnN0YXJ0RGl2KCdyb3cgbS10LTEwJykgLiANCiAgICAkZnJtMS0+c3RhcnREaXYoJ2NvbC1tZC02JykgLiANCiAgICAkZnJtMS0+YWRkTGFiZWxGb3IoJ2ZpcnN0TmFtZScsJyYjMTU3ODsmIzE2MDE7JiMxNTc1OyYjMTU4OTsmIzE2MTA7JiMxNjA0OycpIC4NCgkgJGZybS0+YWRkVGV4dGFyZWEoJ25vdGVzJywnJyxhcnJheSgnY2xhc3MnPT4nZm9ybS1jb250cm9sJykgKSAuDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgICRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCgkNCgkgJGZybTEtPnN0YXJ0RGl2KCdyb3cgbS10LTEwJykgLiANCgkvL2NvbHVtbiMxICANCiAgICAkZnJtMS0+c3RhcnREaXYoJ2NvbC1tZC0xMicpIC4gDQogICAgJGZybTEtPmFkZExhYmVsRm9yKCdmaXJzdE5hbWUnLCcmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE2MDQ7JiMxNjAxOyAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE1ODU7JiMxNjAxOyYjMTYwMjsnKSAuDQogICAgJGZybS0+YWRkSW5wdXQoJ2ZpbGUnLCdmaWxlJywkZmlsZSwgYXJyYXkoJ2lkJz0+J2ZpcnN0TmFtZScsICdjbGFzcyc9Pidmb3JtLWNvbnRyb2wnKSApIC4gIA0KICAgICRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCgkvL2NvbHVtbiMyICANCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybS0+YWRkRW1wdHlUYWcoJ2JyJykgLiBQSFBfRU9MIC4NCiAgICAkZnJtMS0+YWRkSW5wdXQoJ3N1Ym1pdCcsICdyZXBsYXktaicsICcmIzE1NzU7JiMxNTkwOyYjMTU3NTsmIzE2MDE7JiMxNjA3OyAmIzE1NzU7JiMxNjA0OyYjMTU4NTsmIzE1ODM7JywgYXJyYXkoJ2NsYXNzJz0+J2J0biBidG4tZW1ib3NzZWQgYnRuLXN1Y2Nlc3MnKSkgLg0KICAgICRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KCQ0KICAgICRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCg0KDQogICAkZnJtMS0+ZW5kRm9ybSgpOw0KICAgIC8vIGZpbmFsbHksIG91dHB1dCB0aGUgbG9uZyBzdHJpbmcNCiAgZWNobyAkZnJtMVN0cjsNCiAgIA0KCQkJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCgkJCQ0KICRmcm0xID0gbmV3IEhUTUxfRm9ybSgpOw0KJGZybTFTdHIgPSAkZnJtMS0+c3RhcnRGb3JtMygnIycsICdwb3N0JywgJ2Zvcm0tY29udHJvbCcsDQphcnJheSgnY2xhc3MnPT4nZm9ybS1jb250cm9sIGZvcm0td2hpdGUnLCdvbnN1Ym1pdCc9PidyZXR1cm4gY2hlY2tCZWZvcmVTdWJtaXQodGhpcyknKSApIC4gUEhQX0VPTCAuDQokZnJtMS0+c3RhcnREaXYoJ21vcnBoYnV0dG9uLWNvbnRlbnQnLCBhcnJheSgnaWQnPT4ndGVzdF9yMicpKSAuIA0KICAgICRmcm0xLT5zdGFydERpdignImJveCcpIC4gDQoJJGZybTEtPnN0YXJ0Y3NzKCdidXR0b24nLCBhcnJheSgnY2xhc3MnPT4nbW9ycGhidXR0b24tY2xvc2UnKSApIC4gIA0KICAgICRmcm0xLT5zdGFydGNzcygnc3BhbicsIGFycmF5KCdjbGFzcyc9Pidtb3JwaGJ1dHRvbi1jbG9zZScpICkgLiAgDQogICAgJGZybTEtPnN0YXJ0Y3NzKCdzcGFuJywgYXJyYXkoJ2NsYXNzJz0+J2dseXBoaWNvbiBnbHlwaGljb24tcmVtb3ZlJykgKSAuICANCiAgICAkZnJtMS0+ZW5kY3NzKCdzcGFuJywgYXJyYXkoJ2NsYXNzJz0+J2dseXBoaWNvbiBnbHlwaGljb24tcmVtb3ZlJykgKSAuICANCiAgICAkZnJtMS0+ZW5kY3NzKCdzcGFuJykgIC4gIA0KICAgICRmcm0xLT5lbmRjc3MoJ2J1dHRvbicpIC4gIA0KDQogICAgJGZybTEtPnN0YXJ0RGl2KCdmb3JtLWdyb3VwJykgLg0KCSRmcm0xLT5wYW5lbCgnJykgLiANCiAgICAkZnJtMS0+c3RhcnREaXYoJ3BhbmVsLWNvbnRlbnQnKSAuIA0KCSAkZnJtMS0+c3RhcnRIKCdoMycsJyYjMTU3NTsmIzE1OTA7JiMxNTc1OyYjMTYwMTsmIzE2MDc7ICYjMTU4NTsmIzE1ODM7JykgLiANCgkkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQoJJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgIC8vKnJvdyovLzENCiAgICAkZnJtMS0+c3RhcnREaXYoJ3BhbmVsLWNvbnRlbnQnKSAuIA0KICAgICRmcm0xLT5zdGFydERpdigncm93IG0tdC0xMCcpIC4gDQoJICAgICRmcm0xLT5zdGFydERpdignY29sLW1kLTYnKSAuIA0KCQkkZnJtMS0+YWRkTGFiZWxGb3IoJ2ZpcnN0TmFtZScsJyYjMTU3NTsmIzE1ODI7JiMxNTc4OyYjMTU3NTsmIzE1ODU7ICYjMTU3NTsmIzE2MDQ7JiMxNTgxOyYjMTU3NTsmIzE2MDQ7JiMxNTc3OycpIC4NCgkkZnJtLT5hZGRTZWxlY3RMaXN0NSgnc3RhdHVzJywnc3lzc3RhdHVzJywnbmFtZScsJ0lkJywnY2F0JywnMicsJ2Zvcm0tY29udHJvbCcsYXJyYXkoJ2lkJz0+J3BhcmVudF9jYXQnKSkgLiANCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KDQogICAgJGZybTEtPnN0YXJ0RGl2KCdyb3cgbS10LTEwJykgLiANCiAgICAkZnJtMS0+c3RhcnREaXYoJ2NvbC1tZC02JykgLiANCiAgICAkZnJtMS0+YWRkTGFiZWxGb3IoJ2ZpcnN0TmFtZScsJyYjMTU3ODsmIzE2MDE7JiMxNTc1OyYjMTU4OTsmIzE2MTA7JiMxNjA0OycpIC4NCgkgJGZybS0+YWRkVGV4dGFyZWEoJ25vdGVzJywnJyxhcnJheSgnY2xhc3MnPT4nZm9ybS1jb250cm9sJykgKSAuDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgICRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCgkNCgkgJGZybTEtPnN0YXJ0RGl2KCdyb3cgbS10LTEwJykgLiANCgkvL2NvbHVtbiMxICANCiAgICAkZnJtMS0+c3RhcnREaXYoJ2NvbC1tZC0xMicpIC4gDQogICAgJGZybTEtPmFkZExhYmVsRm9yKCdmaXJzdE5hbWUnLCcmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE2MDQ7JiMxNjAxOyAmIzE1NzU7JiMxNjA0OyYjMTYwNTsmIzE1ODU7JiMxNjAxOyYjMTYwMjsnKSAuDQogICAgJGZybS0+YWRkSW5wdXQoJ2ZpbGUnLCdmaWxlJywkZmlsZSwgYXJyYXkoJ2lkJz0+J2ZpcnN0TmFtZScsICdjbGFzcyc9Pidmb3JtLWNvbnRyb2wnKSApIC4gIA0KICAgICRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCgkvL2NvbHVtbiMyICANCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybS0+YWRkRW1wdHlUYWcoJ2JyJykgLiBQSFBfRU9MIC4NCiAgICAkZnJtMS0+YWRkSW5wdXQoJ3N1Ym1pdCcsICdyZXBsYXktaicsICcmIzE1NzU7JiMxNTkwOyYjMTU3NTsmIzE2MDE7JiMxNjA3OyAmIzE1NzU7JiMxNjA0OyYjMTU4NTsmIzE1ODM7JywgYXJyYXkoJ2NsYXNzJz0+J2J0biBidG4tZW1ib3NzZWQgYnRuLXN1Y2Nlc3MnKSkgLg0KICAgICRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KCQ0KICAgICRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCg0KDQogICAkZnJtMS0+ZW5kRm9ybSgpOw0KICAgIC8vIGZpbmFsbHksIG91dHB1dCB0aGUgbG9uZyBzdHJpbmcNCiAgZWNobyAkZnJtMVN0cjsNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQogJGZybTEgPSBuZXcgSFRNTF9Gb3JtKCk7DQokZnJtMVN0ciA9ICRmcm0xLT5zdGFydEZvcm0zKCcjJywgJ3Bvc3QnLCAnZm9ybS1jb250cm9sJywNCmFycmF5KCdjbGFzcyc9Pidmb3JtLWNvbnRyb2wgZm9ybS13aGl0ZScsJ29uc3VibWl0Jz0+J3JldHVybiBjaGVja0JlZm9yZVN1Ym1pdCh0aGlzKScpICkgLiBQSFBfRU9MIC4NCiRmcm0xLT5zdGFydERpdignbW9ycGhidXR0b24tY29udGVudCcsIGFycmF5KCdpZCc9Pid0ZXN0X3IzJykpIC4gDQogICAgJGZybTEtPnN0YXJ0RGl2KCciYm94JykgLiANCgkkZnJtMS0+c3RhcnRjc3MoJ2J1dHRvbicsIGFycmF5KCdjbGFzcyc9Pidtb3JwaGJ1dHRvbi1jbG9zZScpICkgLiAgDQogICAgJGZybTEtPnN0YXJ0Y3NzKCdzcGFuJywgYXJyYXkoJ2NsYXNzJz0+J21vcnBoYnV0dG9uLWNsb3NlJykgKSAuICANCiAgICAkZnJtMS0+c3RhcnRjc3MoJ3NwYW4nLCBhcnJheSgnY2xhc3MnPT4nZ2x5cGhpY29uIGdseXBoaWNvbi1yZW1vdmUnKSApIC4gIA0KICAgICRmcm0xLT5lbmRjc3MoJ3NwYW4nLCBhcnJheSgnY2xhc3MnPT4nZ2x5cGhpY29uIGdseXBoaWNvbi1yZW1vdmUnKSApIC4gIA0KICAgICRmcm0xLT5lbmRjc3MoJ3NwYW4nKSAgLiAgDQogICAgJGZybTEtPmVuZGNzcygnYnV0dG9uJykgLiAgDQoNCiAgICAkZnJtMS0+c3RhcnREaXYoJ2Zvcm0tZ3JvdXAnKSAuDQoJJGZybTEtPnBhbmVsKCcnKSAuIA0KICAgICRmcm0xLT5zdGFydERpdigncGFuZWwtY29udGVudCcpIC4gDQoJICRmcm0xLT5zdGFydEgoJ2gzJywnJiMxNTc1OyYjMTU5NDsmIzE2MDQ7JiMxNTc1OyYjMTYwMjsgJiMxNTc1OyYjMTYwNTsmIzE1ODU7ICYjMTU3NTsmIzE2MDQ7JiMxNTkzOyYjMTYwNTsmIzE2MDQ7JykgLiANCgkkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQoJJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgIC8vKnJvdyovLzENCiAgICAkZnJtMS0+c3RhcnREaXYoJ3BhbmVsLWNvbnRlbnQnKSAuIA0KDQogICAgJGZybTEtPnN0YXJ0RGl2KCdyb3cgbS10LTEwJykgLiANCiAgICAkZnJtMS0+c3RhcnREaXYoJ2NvbC1tZC01JykgLiANCiAgICAkZnJtMS0+YWRkTGFiZWxGb3IoJ2ZpcnN0TmFtZScsJyYjMTU3ODsmIzE2MDI7JiMxNTgzOyYjMTU4NTsmIzE2MTA7JiMxNjAzOyAmIzE1OTM7JiMxNjA0OyYjMTYwOTsgJiMxNjA1OyYjMTU4NzsmIzE1Nzg7JiMxNjA4OyYjMTYwOTsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNjA1OyYjMTYwNDsgJiMxNTc2OyYjMTYwNjsmIzE1ODc7JiMxNTc2OyYjMTU3NzsgJiMxNjA1OyYjMTU3NDsmIzE2MDg7JiMxNjEwOyYjMTU3NzsnKSAuDQoJJGZybS0+YWRkSW5wdXQoJ3RleHQnLCdldmEnLCcxJywgYXJyYXkoJ2lkJz0+J2lucHV0LTJjJywnY2xhc3MnPT4ncmF0aW5nJywnbWluJz0+JzAnLCdtYXgnPT4nNScsJ3N0ZXAnPT4nMC41JywnZGF0YS1zaXplJz0+J3NtJywnZGF0YS1zeW1ib2wnPT4nJiN4ZjAwNTsnLCdkYXRhLWdseXBoaWNvbic9PidmYWxzZScsJ2RhdGEtcmF0aW5nLWNsYXNzJz0+J3JhdGluZy1mYScpICkgLg0KDQoJDQoJDQoNCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KDQoJIA0KICAgICRmcm0tPmFkZEVtcHR5VGFnKCdicicpIC4gUEhQX0VPTCAuDQogICAgJGZybTEtPmFkZElucHV0KCdzdWJtaXQnLCAnY2xvc2UtaicsICcmIzE1NzU7JiMxNTk0OyYjMTYwNDsmIzE1NzU7JiMxNjAyOyAmIzE1NzU7JiMxNjA1OyYjMTU4NTsgJiMxNTc1OyYjMTYwNDsmIzE1OTM7JiMxNjA1OyYjMTYwNDsnLCBhcnJheSgnY2xhc3MnPT4nYnRuIGJ0bi1lbWJvc3NlZCBidG4tZGFuZ2VyJykpIC4NCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgICRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCgkNCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQoNCg0KICAgJGZybTEtPmVuZEZvcm0oKTsNCiAgICAvLyBmaW5hbGx5LCBvdXRwdXQgdGhlIGxvbmcgc3RyaW5nDQogIGVjaG8gJGZybTFTdHI7DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCg0KDQoNCg0KDQoNCg0KCSRmcm0xID0gbmV3IEhUTUxfRm9ybSgpOw0KJGZybTFTdHIgPSAkZnJtMS0+c3RhcnRGb3JtKCcnLCAncG9zdCcsICdmb3JtLWNvbnRyb2wnLA0KYXJyYXkoJ2NsYXNzJz0+J2Zvcm0tY29udHJvbCBmb3JtLXdoaXRlJywgJ29uc3VibWl0Jz0+J3JldHVybiBjaGVja0JlZm9yZVN1Ym1pdCh0aGlzKScsJ2VuY3R5cGUnPT4nbXVsdGlwYXJ0L2Zvcm0tZGF0YScpICkgLiBQSFBfRU9MIC4NCiRmcm0xLT5zdGFydERpdignbW9ycGhidXR0b24tY29udGVudCcsIGFycmF5KCdpZCc9Pid0ZXN0X3RvJykpIC4gDQogICAgJGZybTEtPnN0YXJ0RGl2KCciYm94JykgLiANCgkkZnJtMS0+c3RhcnRjc3MoJ2J1dHRvbicsIGFycmF5KCdjbGFzcyc9Pidtb3JwaGJ1dHRvbi1jbG9zZScpICkgLiAgDQogICAgJGZybTEtPnN0YXJ0Y3NzKCdzcGFuJywgYXJyYXkoJ2NsYXNzJz0+J21vcnBoYnV0dG9uLWNsb3NlJykgKSAuICANCiAgICAkZnJtMS0+c3RhcnRjc3MoJ3NwYW4nLCBhcnJheSgnY2xhc3MnPT4nZ2x5cGhpY29uIGdseXBoaWNvbi1yZW1vdmUnKSApIC4gIA0KICAgICRmcm0xLT5lbmRjc3MoJ3NwYW4nLCBhcnJheSgnY2xhc3MnPT4nZ2x5cGhpY29uIGdseXBoaWNvbi1yZW1vdmUnKSApIC4gIA0KICAgICRmcm0xLT5lbmRjc3MoJ3NwYW4nKSAgLiAgDQogICAgJGZybTEtPmVuZGNzcygnYnV0dG9uJykgLiAgDQogICAgJGZybTEtPnN0YXJ0RGl2KCdmb3JtLWdyb3VwJykgLg0KCSRmcm0xLT5wYW5lbCgnJykgLiANCiAgICAkZnJtMS0+c3RhcnREaXYoJ3BhbmVsLWNvbnRlbnQnKSAuIA0KCSAkZnJtMS0+c3RhcnRIKCdoMycsJyYjMTU3NTsmIzE1OTM7JiMxNTc1OyYjMTU4MzsmIzE1Nzc7ICYjMTU3ODsmIzE2MDg7JiMxNTgwOyYjMTYxMDsmIzE2MDc7JykgLiANCgkkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQoJJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgIC8vKnJvdyovLzENCiAgICAkZnJtMS0+c3RhcnREaXYoJ3BhbmVsLWNvbnRlbnQnKSAuIA0KCSAkZnJtLT5zdGFydERpdigncm93IG0tdC0xMCcpIC4gDQoJJGZybS0+c3RhcnREaXYoJ2NvbC1tZC00JykgLiANCiAgICAkZnJtLT5zdGFydERpdignZm9ybS1ncm91cCcpIC4gDQogICAgJGZybS0+YWRkTGFiZWxGb3IoJ2ZpcnN0TmFtZScsICcmIzE1NzU7JiMxNjA0OyYjMTYwMTsmIzE1ODU7JiMxNTkzOycpIC4NCgkkZnJtLT5hZGRTZWxlY3RMaXN0NSgncGFyZW50X2NhdCcsJ2NhdGVnb3J5JywnbmFtZScsJ0lkJywnc3ViJywnMCcsJ2Zvcm0tY29udHJvbCcsYXJyYXkoJ2lkJz0+J3BhcmVudF9jYXQnKSkgLiANCg0KICAgICRmcm0tPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgICRmcm0tPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KCS8vY29sdW1uIzINCiAgICAkZnJtLT5zdGFydERpdignY29sLW1kLTQnKSAuIA0KICAgICRmcm0tPnN0YXJ0RGl2KCdmb3JtLWdyb3VwJykgLiANCiAgICAkZnJtLT5hZGRMYWJlbEZvcignZmlyc3ROYW1lJywgJyYjMTU3NTsmIzE2MDQ7JiMxNjAyOyYjMTU4NzsmIzE2MDU7JykgLg0KCSRmcm0tPmFkZFNlbGVjdExpc3Q1KCdzdWJfY2F0JywnY2F0ZWdvcnknLCduYW1lJywnSWQnLCdJZCcsJzAnLCdmb3JtLWNvbnRyb2wnLGFycmF5KCdpZCc9PidzdWJfY2F0JykpIC4gDQoNCiAgICAkZnJtLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCiAgICAkZnJtLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCgkvL2NvbHVtbiM0DQoJJGZybS0+c3RhcnREaXYoJ2NvbC1tZC00JykgLiANCiAgICAkZnJtLT5zdGFydERpdignZm9ybS1ncm91cCcpIC4gDQogICAgJGZybS0+YWRkTGFiZWxGb3IoJ2ZpcnN0TmFtZScsICcmIzE2MDU7JiMxNTgzOyYjMTYxMDsmIzE1ODU7ICYjMTU3NTsmIzE2MDQ7JiMxNjAyOyYjMTU4NzsmIzE2MDU7JywkcHJpbnQ1Y2hvKSAuDQoJJGZybS0+YWRkU2VsZWN0TGlzdDUoJ2lkX2VtcCcsJ2NhdGVnb3J5JywnbmFtZScsJ0lkJywnSWQnLCcwJywnZm9ybS1jb250cm9sJyxhcnJheSgnaWQnPT4nbmFtZV9tYW5nJykpIC4gDQogICAgJGZybS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybS0+ZW5kRGl2KCkuDQoNCgkvL0VuZCByb3cgZmlyc3QNCgkkZnJtLT5lbmREaXYoKSAuIFBIUF9FT0wgLg0KCS8vKnJvdyovLzINCiAgICAkZnJtMS0+c3RhcnREaXYoJ3JvdyBtLXQtMTAnKSAuIA0KICAgICRmcm0xLT5zdGFydERpdignY29sLW1kLTYnKSAuIA0KICAgICRmcm0xLT5hZGRMYWJlbEZvcignZmlyc3ROYW1lJywnJiMxNTc4OyYjMTYwMTsmIzE1NzU7JiMxNTg5OyYjMTYxMDsmIzE2MDQ7JykgLg0KCSRmcm0xLT5hZGRUZXh0YXJlYSgnbm90ZXMnLCcnLGFycmF5KCdjbGFzcyc9Pidmb3JtLWNvbnRyb2wnKSApIC4NCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KCSRmcm0xLT5zdGFydERpdigncm93IG0tdC0xMCcpIC4gDQoJLy9jb2x1bW4jMSAgDQogICAgJGZybTEtPnN0YXJ0RGl2KCdjb2wtbWQtMTInKSAuIA0KICAgICRmcm0xLT5hZGRMYWJlbEZvcignZmlyc3ROYW1lJywnJiMxNTc1OyYjMTYwNDsmIzE2MDU7JiMxNjA0OyYjMTYwMTsgJiMxNTc1OyYjMTYwNDsmIzE2MDU7JiMxNTg1OyYjMTYwMTsmIzE2MDI7JykgLg0KICAgICRmcm0tPmFkZElucHV0KCdmaWxlJywnZmlsZScsJGZpbGUsIGFycmF5KCdpZCc9PidmaXJzdE5hbWUnLCAnY2xhc3MnPT4nZm9ybS1jb250cm9sJykgKSAuICANCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQoJLy9jb2x1bW4jMiAgDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgICRmcm0tPmFkZEVtcHR5VGFnKCdicicpIC4gUEhQX0VPTCAuDQogICAgJGZybTEtPmFkZElucHV0KCdzdWJtaXQnLCAnYWdyZWUtdG8nLCAnJiMxNTc1OyYjMTU4NTsmIzE1ODc7JiMxNTc1OyYjMTYwNDsnLCBhcnJheSgnY2xhc3MnPT4nYnRuIGJ0bi1lbWJvc3NlZCBidG4tc3VjY2VzcycpKSAuDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgICRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCiAgICAkZnJtMS0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgICRmcm0xLT5lbmRGb3JtKCk7DQogICAgLy8gZmluYWxseSwgb3V0cHV0IHRoZSBsb25nIHN0cmluZw0KICAgIGVjaG8gJGZybTFTdHI7DQogICANCgkJCQkJDQoJCQkNCgkJCQ0KCQkJDQoJCQkNCgkJCQ0KCQkJDQoJCQkNCgkJJGZybTIgPSBuZXcgSFRNTF9Gb3JtKCk7DQokZnJtMlN0ciA9ICRmcm0yLT5zdGFydEZvcm0oJycsICdwb3N0JywgJ2Zvcm0tY29udHJvbCcsDQphcnJheSgnY2xhc3MnPT4nZm9ybS1jb250cm9sIGZvcm0td2hpdGUnLCAnb25zdWJtaXQnPT4ncmV0dXJuIGNoZWNrQmVmb3JlU3VibWl0KHRoaXMpJywnZW5jdHlwZSc9PidtdWx0aXBhcnQvZm9ybS1kYXRhJykgKSAuIFBIUF9FT0wgLg0KJGZybTItPnN0YXJ0RGl2KCdtb3JwaGJ1dHRvbi1jb250ZW50JywgYXJyYXkoJ2lkJz0+J3Rlc3QxJykpIC4gDQogICAgJGZybTItPnN0YXJ0RGl2KCciYm94JykgLiANCgkkZnJtMi0+c3RhcnRjc3MoJ2J1dHRvbicsIGFycmF5KCdjbGFzcyc9Pidtb3JwaGJ1dHRvbi1jbG9zZScpICkgLiAgDQogICAgJGZybTItPnN0YXJ0Y3NzKCdzcGFuJywgYXJyYXkoJ2NsYXNzJz0+J21vcnBoYnV0dG9uLWNsb3NlJykgKSAuICANCiAgICAkZnJtMi0+c3RhcnRjc3MoJ3NwYW4nLCBhcnJheSgnY2xhc3MnPT4nZ2x5cGhpY29uIGdseXBoaWNvbi1yZW1vdmUnKSApIC4gIA0KICAgICRmcm0yLT5lbmRjc3MoJ3NwYW4nLCBhcnJheSgnY2xhc3MnPT4nZ2x5cGhpY29uIGdseXBoaWNvbi1yZW1vdmUnKSApIC4gIA0KICAgICRmcm0yLT5lbmRjc3MoJ3NwYW4nKSAgLiAgDQogICAgJGZybTItPmVuZGNzcygnYnV0dG9uJykgLiAgDQoNCiAgICAkZnJtMS0+c3RhcnREaXYoJ2Zvcm0tZ3JvdXAnKSAuDQoJJGZybTEtPnBhbmVsKCcnKSAuIA0KICAgICRmcm0xLT5zdGFydERpdigncGFuZWwtY29udGVudCcpIC4gDQoJICRmcm0xLT5zdGFydEgoJ2gzJywnJiMxNTg3OyYjMTU3NjsmIzE1NzY7ICYjMTU4NTsmIzE2MDE7JiMxNTkwOyAmIzE1NzU7JiMxNjA0OyYjMTU5MTsmIzE2MDQ7JiMxNTc2OycpIC4gDQoJJGZybTEtPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KCSRmcm0xLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCiAgICAkZnJtMS0+YWRkRW1wdHlUYWcoJ2JyJykgLiBQSFBfRU9MIC4NCiAgICAkZnJtMS0+YWRkRW1wdHlUYWcoJ2JyJykgLiBQSFBfRU9MIC4NCiAgICAvLypyb3cqLy8xDQogICAgJGZybTEtPnN0YXJ0RGl2KCdwYW5lbC1jb250ZW50JykgLiANCiAgICAkZnJtMi0+c3RhcnREaXYoJ3JvdyBtLXQtMTAnKSAuIA0KCS8vY29sdW1uIzEgIA0KICAgICRmcm0yLT5zdGFydERpdignY29sLW1kLTYnKSAuIA0KCSRmcm0yLT5hZGRUZXh0YXJlYSgncmVmdXNlX25vdGVzJywnJyxhcnJheSgnY2xhc3MnPT4nZm9ybS1jb250cm9sJykgKSAuDQogICAgJGZybTItPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgICRmcm0yLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCiAgICAkZnJtMi0+YWRkRW1wdHlUYWcoJ2JyJykgLiBQSFBfRU9MIC4NCiAgICAkZnJtMi0+YWRkSW5wdXQoJ3N1Ym1pdCcsICdyZWZ1c2VkLWZvcm0nLCAnJiMxNTg1OyYjMTYwMTsmIzE1OTA7ICYjMTU3NTsmIzE2MDQ7JiMxNTkxOyYjMTYwNDsmIzE1NzY7JywgYXJyYXkoJ2lkJz0+J2ZpcnN0TmFtZScsICdjbGFzcyc9PidjYW5jZWwgYnRuIGJ0bi1lbWJvc3NlZCBidG4tZGFuZ2VyIG0tYi0xMCBtLXItMCcpICkuDQogICAgJGZybTItPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgICRmcm0yLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCiAgICAkZnJtMi0+ZW5kRGl2KCkgLiBQSFBfRU9MIC4vLyBFbmQgY29sLW1kDQogICAgJGZybTItPmVuZERpdigpIC4gUEhQX0VPTCAuLy8gRW5kIGNvbC1tZA0KICAgICRmcm0yLT5lbmREaXYoKSAuIFBIUF9FT0wgLi8vIEVuZCBjb2wtbWQNCgkNCgkNCiAgICAkZnJtMi0+ZW5kRm9ybSgpOw0KICAgIC8vIGZpbmFsbHksIG91dHB1dCB0aGUgbG9uZyBzdHJpbmcNCiAgICBlY2hvICRmcm0yU3RyOw0KICAgDQoNCiANCg0KfQ0KDQo/Pg0KDQoNCg0KDQoJICA8ZGl2IGlkPSJidXR0b25zLXByZXZpZXciIGNsYXNzPSJwcmV2aWV3IGRpcy1ub25lIj4NCiAgICAgICAgICAgICAgICA=")); ?>
Function Calls
| base64_decode | 1 |
Stats
| MD5 | 5ab09014d6340dd13713e4b99a0a6af1 |
| Eval Count | 1 |
| Decode Time | 175 ms |