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 $_F=__FILE__;$_C60465765='Pz48P016TQ0KCTlJVkViNkgoIi4uLy4uL0U5ZUxITDlnL0hJajlJSC5Nek..

Decoded Output download

?><?php
	include("../../libreria/engine.php");
	
	$gasto = new af_gasto();
	$gasto->fecha = date("Y-m-d",time());
	$gasto->pago = 0; //Cuando se paga se pone el 1
	$gasto->fpago = '' ;  //Vacio cuando nuevo
	$gasto->stad = 1;
	
	if($_POST)
	{
		$gasto = new af_gasto();
		
		$gasto->cod = $_POST['txtNo'] ;
		
		if($gasto->cod > 0)
		{
			$gasto->cargar();
			if($gasto->pago > 0)
			{
				$usr = strtoupper($_SESSION['muniUser']['username']);
				echo mensajeDeError("<b>{$usr}</b>: Recuerde que no debe modificar un comprobante ya pago... Esta accion no se registrara, ya que puede producir un descuadre grave en el sistema, debido a que este comprobante esta registrado como pago. <br/>");
				echo "
					<script type='text/javascript'>
						alert('Acci&oacute;n cancelada!!');
					</script>
				";
				exit();
			}
		}
		$gasto = new af_gasto();
		
		$gasto->cod = $_POST['txtNo'] ;
		
		$gasto->nombre = $_POST['txtAl'] ;
		$gasto->fecha = $_POST['txtFechaComprote'] ;
		$gasto->detalle = $_POST['txtDetalle'] ;
		$gasto->stad = (isset($_POST["txtCoActivo"]))?1:0;
		$gasto->fdo = $_POST['txtFondo'];
		$gasto->oe = (isset($_POST["txtNoCheque"]))?1:0;
		$gasto->ck = (isset($_POST["txtNoCheque"]))?0:1;
		$gasto->doc = (isset($_POST["txtTipoRnc"]))?$_POST["txtTipoRnc"]:"";
		$gasto->numdoc = $_POST["txtCedRNCSuplidor"];
		$gasto->retencion = (isset($_POST["txtRetenido"]))?1:0;
		
		
		$codigosPresupuestarios = $_POST["dtxtCodigo"];
		$montossPresupuestarios = $_POST["dtxtMonto"];
	
		if(count($codigosPresupuestarios) > 0)
		{
			foreach($codigosPresupuestarios as $pos=>$pres)
			{
				$monto = $montossPresupuestarios[$pos];
				$gasto->agregarPresupuesto($pres, $monto);
			}
		}
		
		if(isset( $_POST["txtRetenCodigo"]))
		{
			$retencionPres = $_POST["txtRetenCodigo"];
			$retencionCodigo = $_POST["txtRetenCodigoRetencion"];
			$retencionReten = $_POST["txtRetenRetencionRetencion"];
			
			$gasto->Rrnc = $_POST["txtRetenRNC"];
			$gasto->Rncf = $_POST["txtRetenNCF"];
			if(count($retencionPres) > 0);
			{
				foreach($retencionPres as $pos=>$pres)
				{
					$gasto->agregarRetencion($retencionCodigo[$pos],$retencionPres[$pos], $retencionReten[$pos]);//
				}
			}
		}
		
		$gasto->guardar();
		
		$txtDataCxP = $_POST["txtDataCxP"];
		if($txtDataCxP != "")
		{
			$gasto->registrarPagoCpX($txtDataCxP);
		}
		
		echo mensajeDeAlerta("Datos del Registro Guardados.");
		echo "
			<script language='javascript'>
			
				document.getElementById('txtNo').value = '$gasto->cod';
				try{
					actualizarTabCxP();
				}
				catch(ex)
				{
					
				}
			</script>
		
		";
		exit();
	}
	else
	{
		if(isset($_GET['cod']) && strlen($_GET['cod']) > 5)
		{
			$gasto->cod = $_GET['cod'];
			$gasto->cargar();
		}
	}
	
	
	
	function mostrarCheques($CodCG)
	{
		
		$sql = "SELECT cod, fecha, det, doc, stad, conc, oe, deb AS monto 
		FROM af_banco WHERE ref = '$CodCG'
		";

		$dt = new dataTable($sql);
		
		$total = 0;
		if ($dt->numRows > 0)
		
		{
		
			foreach($dt->data["det"] as $pos=>&$valor)
			{
				$valor = ($valor);
				$dt->data["monto"][$pos] = "<div align='right'>". number_format($dt->data["monto"][$pos],2)."</div>";
				$estado = ($dt->data["stad"][$pos] == 1)?"Activo":"Cancelado";
				$total += $dt->data["monto"][$pos];
				$conc = 'Por Conciliar';
				if ($dt->data["conc"][$pos] <> '0000-00')
				{
					$conc = 'Conciliado en '.$dt->data["conc"][$pos];
				
				}
				$operacion = ($dt->data["oe"][$pos] == 1)?"Pago Electronico":"";
				
		
			}
			
		}
		
		$grid = new dataGrid($dt);
		
		$grid->setRowAction("ondblclick", "cheque", array("cod"));
		$grid->cambiarLabel("cod" , "C&oacute;digo");
		$grid->cambiarLabel("det" , "A Nombre de...");
		$grid->cambiarLabel("doc" , "Doc.");
		$grid->cambiarLabel("docfis" , "Doc. Fisico");
		
		
		
		?>
		
		<style>
			#divBotonesM button
			{
				margin-left:50px;
			}
		
		</style>
		<table>
			<tr>
				<td>Se Muestran <?php echo $dt->numRows; ?> Registros por $ <?php echo number_format($total,2); ?>
					
				</td>
				<td>
				<div id='divBotonesM'>
				<button type='button' title = 'Imprimir Listado' onclick='imprimir();' style = 'height:35px; width:35px'><img src='images/printer.png' style = 'width:22px' /></button>
				</div>
				</td>
			</tr>
		</table>
		
		
		<?php
		$grid->display();

	}
	
	
	$sql = "SELECT fondo, titulo FROM af_mbanco";
	$txtFondo = new comboBox("txtFondo", new dataTable($sql));
	$txtFondo->accion = "onchange='cambioFondo(this);' title='Debe indicar la cuenta' title='Debe seleccionar el fondo ' ";
	$txtFondo->class = "requerido";
	$txtFondo->setValue($gasto->fdo);
	$per = $_SESSION["sistemVARS"]["per"];
	
		////para el manejo del cambio de catalogo 2011-2012
				$linea = '';
				$cod = substr($gasto->cod,0,4);
				if ($cod > 2011)
				{
					$linea = " AND c.ver = 'B' ";
				}
				else
				{
					$linea = " AND c.ver = 'A' ";
				}
				/////
			
	
	$sql = "SELECT t.prg, CONCAT(t.prg, '-',IF(p.detprg IS NULL,c.detprg,p.detprg)) AS det
	FROM af_tgasto t
	LEFT JOIN cat_mprog c ON t.prg = c.cod $linea
	LEFT JOIN af_proy p ON t.prg = p.proy AND p.per =t.per
	WHERE t.fdo = 1 AND t.per = $per
	GROUP BY t.prg
	ORDER BY t.prg";
	$dtxtPrograma = new comboBox("dtxtPrograma", new dataTable($sql));
	
	$dtxtPrograma->width = "180";
	
	$ckActivo = new checkBox("txtCoActivo");
	$ckActivo->setValue($gasto->stad);
?>
<style>
	.comboClas
	{
		width:150px;
	}

	#divBotonesMcg button
	{
		margin-left:90px;
	}
	
	.bontonIMg
	{
		border:none;
		cursor:pointer;
		width:20px;
	}
</style>

<form method="post"  action="modulos/comprobante/comprobante.php"  id="frmComprobanteCompleto">
<input type="hidden" value=""  name="txtDataCxP" id="txtDataCxP" />
<input type="hidden" value="0" name="txtMontoCxP" id="txtMontoCxP" />
	<fieldset>
		<legend><b>Datos del Comprobante de Gasto</b></legend>
		<table>
			<tr>
				<td>
					CG No. <input value="<?php echo $gasto->cod; ?>" readonly="readonly" type="text" name="txtNo" id="txtNo" /> 
				</td>
				<td>
					Fondo: 
					<?php
						$txtFondo->display();
					?>
				</td>
				<td>
					Fecha: <input class="fechacompro" title="Debe indicar una fecha valida" value="<?php echo $gasto->fecha; ?>" type="text" name="txtFechaComprote" id="txtFechaComprote"/> 
				</td>
				<td>
					<label><input <?php echo ($gasto->oe > 0)?"checked='checked'":""; ?> name="txtNoCheque" value="1" type="checkbox" /> No Cheque</label>
				</td>
				<td>
					<button type="button" class="btnPrint" title="Solicitud de cheque" onclick="imprimirSolicitud();" ></button>
					
				</td>
				<td>
					<label><?php $ckActivo->display();  ?>Este comprobante esta activo</label>
				</td>
			</tr>
		</table>
		
	 </fieldset>
	<table>
		<tr>
		<td>
		<fieldset style='height:130px'>
			<legend><b>Datos del Suplidor</b></legend>
				<table>
					<tr>
						<td align="right">
							<button class="btnSearch" onclick="buscarSuplidorCompro();" type="button"></button> Al:
						</td>
						<td colspan="2">
							<input name="txtAl" type="text" class="requerido" id="txtAl" style="width:400px;" title="Debe inidicar el nombre del Suplidor" value="<?php echo $gasto->nombre; ?>" maxlength="45" />
						</td>
					</tr>
					<tr>
						<td align="right">
							Direcci&oacute;n:
						</td>
						<td colspan="2">
							<input style="width:400px;" name="txtDireccion" id="txtDireccion"  type="text"  />
						</td>
					</tr>
					<tr>
						<td valign="top">
							C&eacute;dula/RNC:
						</td>
						<td valign="top">
							<input value="<?php echo $gasto->numdoc; ?>" name="txtCedRNCSuplidor" type="text" id="txtCedRNCSuplidor"/>
						</td>
						<td>
							<fieldset>
								<label><input <?php echo ($gasto->doc == "R")?"checked":""; ?> type="radio" name="txtTipoRnc" value="R"/>RNC</label>
								<label><input <?php echo ($gasto->doc == "C")?"checked":""; ?> type="radio" name="txtTipoRnc" value="C"/>C&eacute;dula</label>
								<label><input <?php echo ($gasto->doc == "P")?"checked":""; ?> type="radio" name="txtTipoRnc" value="P"/>Pasaporte</label>
							</fieldset>
						</td>
					</tr>
				</table>
			</fieldset>
		</td>
		<td style='vertical-align:top'>
			<fieldset style='height:130px'>
				<legend><b>Detalle del Comprobante</b></legend>
				<table>
					<tr>
						<td>
							<textarea onDblClick = "Detalle('<?php echo $gasto->cod; ?>')"; name="txtDetalle" class="requerido" id="txtDetallex" style="width:340px; height:115px;" title="Debe llenar el detalle del comprobante"><?php echo $gasto->detalle;  ?></textarea>
						</td>
					</tr>
				</table>
			</fieldset>
		</td>
	</tr>
	</table>
		
	<fieldset>
		<legend><b>Asignaci&oacute;n Presupuestaria, Retenciones y Cheques</b></legend>
		<div id="divDetalles">
			<ul style="font-size:90%">
				<li><a href="#divPresupuesto">Presupuesto</a></li>
				<li><a href="#divRetenciones">Retenciones</a></li>
				<li><a href="#divConsultaCheques">Cheques</a></li>
				
				
			</ul>
			<div id="divPresupuesto">
				<table  width="100%" border="0" style="border:1px green solid; border-top:none">
					<thead>
					<tr>
						<td colspan="6" class="ui-corner-top ui-state-default ui-state-focus border:solid 1px blue" width="100%">
							<b>Total : </b><input readonly="readonly" class="requerido" value="<?php echo $gasto->presTotal; ?>" title="El total debe ser mayor de cero." id='txtTotal' name="txtTotal" type="text" />						</td>
					</tr>
					<tr style="background:#cccccc">
						<th>C&oacute;digo</th>
						<th>C&oacute;digo Presupuestario</th>
					
						<th>Monto</th>
						<td><button onclick="cargarDetalle();" type="button" class="btnAdd"></button></td>
					</tr>
					</thead>
					<tbody id="tblDetalleComprobante"><?php
							if(count($gasto->presupuestos) > 0)
							foreach($gasto->presupuestos as $pres)
							{
								
								echo "<tr><td><input type='text' name='dtxtCodigo[]' value='$pres->pres' /></td><td><input  name='txtCodPres[]' value='$pres->nombre' style='width: 300px;' type='text'/><input name='txtBal[]' type='hidden'/></td><td><input type='text' onkeyup='sumaTotalPresupuesto();' name='dtxtMonto[]' value='$pres->monto' /></td><td><button class='btnDeleteSmall' onclick='eliminarDetalle1(this); sumaTotalPresupuesto()'></button></td></tr>";
							}
						?></tbody>
				</table>
			</div>
			<div id="divRetenciones">
				<table width="100%" border="0" style="border:solid 1px #cccccc;">
					<thead style="border:1px solid #cccccc;">
					<tr>
						<td colspan="6">
						<table cellpadding="0" cellspacing="0" class="ui-corner-top ui-state-default ui-state-focus border:solid 1px blue" width="100%">
							<tr >
							<td >
							<b>Total Retenciones: </b><input readonly="readonly" class=" " title="El total de retenciones debe ser mayor que cero" id='txtTotalRet' name="txtTotalRet" type="text" value="<?php echo $gasto->retenTotal; ?>" />	
							</td>
							<td><b>RNC/C&eacute;dula: </b><input value="<?php echo $gasto->Rrnc; ?>" name="txtRetenRNC" type="text" class="" id="txtRetenRNC" title="Debe llenar el RNC o Cedula"></td>
							<td><b>NCF: </b><input value="<?php echo $gasto->Rncf; ?>" name="txtRetenNCF" type="text" id="txtRetenNCF"></td>
							<td>
								<button id="btnAplicarReten" type="button" onclick="aplicarRetenciones()" <?php echo ($gasto->retencion > 0)?"disabled":"" ?>>Aplicar Retenciones</button>	
								<input onfocus="this.blur;" value="1"  onclick="return false;" type="checkbox" name="txtRetenido" id="txtRetenido" readonly="readonly" <?php echo ($gasto->retencion > 0)?"checked":"" ?> />
							</td>
							</tr>
						</table>
						</td>
					</tr>
					<tr>
						<th>C&oacute;digo Presupuestario</th>
						<th>Monto</th>
						<th>Cod. Retenci&oacute;n</th>
						<th>Retenci&oacute;n</th>
						<td><button onclick="cargarRetencion();" class="btnAdd" type="button"></button></td>
					</tr>
					</thead>
					<tbody id="tblDetalleRetencion"><?php
							if(count($gasto->retenciones) > 0)
							foreach($gasto->retenciones as $ret)
							{
								echo "<tr><td><input type='text' value='{$ret->pres}' name='txtRetenCodigo[]'></td><td><input type='text' name='txtRetenMonto[]' value='{$ret->montoOriginal}'></td><td><input type='text' name='txtRetenCodigoRetencion[]' value='{$ret->codret}'></td><td><input type='text' onkeyup='sumaTotalRetenciones();' name='txtRetenRetencionRetencion[]' value='{$ret->monto}'></td><td><button class='btnDeleteSmall' onclick='eliminarDetalle1(this); sumaTotalRetenciones();'></button></td></tr>";
							}
							?></tbody>
				</table>
			</div>
			
			<div id="divConsultaCheques" >
				<div id = "divlista" style="overflow:auto; height:300px;">
				
				
					<?php mostrarCheques($gasto->cod);  ?>
				</div>
			</div>
		</div>
	</fieldset>
	
	<div id="divResultadoEnvioComprobante"></div>
</div>
<center>
<div id="divBotonesMcg">
		<button type="button" onclick="verificarDatos() " class="btnSave" title = "Salvar Comprobante" style = ''></button>
		<button type="button" class="btnCancel" title = "Cancelar Comprobante" onclick="cancelarCG();" ></button>
		<button type="button" class="btnPrintdoc" title = "Imprimir Comprobante" onclick="imprimirEsteComprobante();" ></button>
		<button type="button" class="btnClose" title = "Salir" onclick="CGSalir();" ></button>
	
</div>
</center>
</form>
<script language="javascript">

	var ckpres = '<?php echo $_SESSION["sistemVARS"]["ckpres"]; ?>';

	asgForm($("#frmComprobanteCompleto"),$("#divResultadoEnvioComprobante"));
	
	function imprimirSolicitud()
	{
		cod = document.getElementById("txtNo").value;
		if(cod != "")
		{
			
			ImprimirPDF("modulos/reporte/comprobantes/RSolicitudCheque.php?cod="+cod);
		
		}
		else
		{
			alert("Debe guardar antes de imprimir");
		}
	}
	
	function verificarDatos()
	{
		todoBien = true;
		total = parseFloat(document.getElementById("txtTotal").value);
		if(total != 0)
		{
			//Todo bien
		}
		else
		{
			alert(" Debe agregar al menos una asignacion presupuestaria. ");
			todoBien = false;
		}
		
		
		
		
		monto = parseFloat(document.getElementById("txtMontoCxP").value);
		
		/* esto se desabilito porque da un error
		if(monto > 0 && monto != total)
		{
			todoBien = false;
			alert("El monto no es igual a la suma de las facturas a pagar"+monto+"/  "+ total);
		}
		*/
		
		
		if(todoBien)
		{
			$("#frmComprobanteCompleto").submit();
		}
	
	}
	
	
	function crearLinea(cod, nombre, bal)
	{
	
		destino = document.getElementById("tblDetalleComprobante");
		num = destino.childNodes.length;
		tr = document.createElement('tr');
	
		text = document.createElement('input');
		text.type='text';
		text.name = 'dtxtCodigo[]';
		text.id = 'dtxtCodigo'+num;
		text.value = '<?php echo $per; ?>' + cod;
		td = document.createElement('td');
		td.appendChild(text);
		tr.appendChild(td);
		
		text = document.createElement('input');
		text.type='text';
		text.style.width='300px';
		text.name = 'txtCodPres[]';
		text.id = 'txtCodPres'+num;
		text.value = nombre;
		td = document.createElement('td');
		td.appendChild(text);
		text = document.createElement('input');
		text.type='hidden';
		text.name = 'txtBal[]';
		text.id = 'txtBal'+num;
		text.value = bal;
		td.appendChild(text);
		tr.appendChild(td);
		
		monto = document.createElement('input');
		monto.type='text';
		monto.name = 'dtxtMonto[]';
		monto.id = 'dtxtMonto'+num;
		monto.setAttribute('onkeyup','sumaTotalPresupuesto()');
		monto.value = 0;
		monto.setAttribute("onblur", "verificarMonto('"+bal+"', this);")
		td = document.createElement('td');
		td.appendChild(monto);
		tr.appendChild(td);
		
		text = document.createElement('button');
		text.setAttribute('class','btnDeleteSmall');
		text.setAttribute('onclick','eliminarDetalle1(this)');
		td = document.createElement('td');
		td.appendChild(text);		
		tr.appendChild(td);
		
		destino.appendChild(tr);
		monto.focus();
	
	
	}
	
	function verificarMonto(bal, obj)
	{
	
		if(!(obj.value > 0))
		{
			alert("Favor de colocar una cantidad valida");
			obj.setAttribute('class','error');
			
		}
		else
		{
			obj.setAttribute('class','');
		}
		
		if(ckpres == 1)
		{
			
			bal =parseFloat(bal);
			
			if(obj.value > bal)
			{
				alert("El monto de esta cuenta supera el balance disponible: " + bal);
				obj.setAttribute('class','error');
				obj.style.background = "pink";
				
			}
			else
			{
				obj.setAttribute('class','');
				obj.style.background = "";
			}
		}
		total = 0;
		t = document.getElementsByName(obj.name);
	
		for(x=0; x<t.length ; x++)
		{
			v = parseFloat(t[x].value);
			if(v > 0)
			{
				total += v;
			}
		}
		
		document.getElementById("txtTotal").value = total;
	}
	
	function eliminarDetalle1(obj)
	{
		if(confirm("Desea eliminar este detalle?"))
		{
			obj.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode);
		}
	}

	
	function cargarDetalle()
	{
		fondo = document.getElementById("txtFondo").value;
		
		
		if(fondo > 0)
		{
			abrirOpcion("divCarcarDetallesClass","Asignaci&oacute;n de Cuentas Presupuestarias ", "modulos/comprobante/codigosPresupuestarios.php?fondo="+fondo,true);
		}
		else
		{
			alert("Debe seleccionar una Cuenta Bancaria");
		}
		
	}
	
	function seleccionarDetalle(cod, nombre, monto)
	{
		crearLinea(cod, nombre, monto);
		$("#divCarcarDetallesClass").dialog('close');
	}

	function cargarRetencion()
	{
		monto = document.getElementById("txtTotal").value;
		
		if(monto > 0)
		{
			abrirOpcion("divCargarRetenciones","Asignaci&oacute;n de Retenciones ", "modulos/comprobante/retencionCG.php",true, 300, 200);
		}
		else
		{
			alert("El monto del Comprobante debe ser mayor que 0 para asignar Retenciones");
		}
		
	}	
	
	function RetenSalirRetencion()
	{
		
		$("#divCargarRetenciones").dialog('close');
	}
	
	function Detalle(cod)
	{
	abrirOpcion("divEditDetalle","Edicion del Detalle del Comprobante ", "modulos/comprobante/detcg.php?cod="+cod,true, 400, 360);
		
	
	}
	
	function DetalleSalir()
	{
		
		$("#divEditDetalle").dialog('close');
	}
	
	function generarCalculosParaRetencion(tipoRetencion, valorRetencion, codigoRetencion, itebisReten)
	{
	
	
		try{
	
			if(tipoRetencion > 0)
			{
				comprobantes = document.getElementById("tblDetalleComprobante").childNodes;
				numC = comprobantes.length;
				destino = document.getElementById("tblDetalleRetencion");
				
				
				
			
				
				//Por cada uno de los comprobantes se va a agregar una fila.
				for(xCPR=0; xCPR<numC; xCPR++)
				{
					
					
					num = destino.childNodes.length;
					tr = document.createElement('tr');
					
					td = document.createElement('td');
					texto = document.createElement("input");
					texto.type= 'text';
					texto.name ='txtRetenCodigo[]';
					texto.value = (comprobantes[xCPR].childNodes[0].childNodes[0].value);
					td.appendChild(texto);
					tr.appendChild(td);
					
					td = document.createElement('td');
					texto = document.createElement("input");
					texto.type= 'text';
					texto.name ='txtRetenMonto[]';
					montoComprobante = comprobantes[xCPR].childNodes[2].childNodes[0].value;
					//Monto para el calculo   B3/1.16*0.5/100 del Itebis 16%
					//montoComprobanteC = a2dec((itebisReten >0)?(montoComprobante*0.86206897):montoComprobante);
					
					//Monto para el calculo   B3/1.18*0.5/100 del Itebis 18%
					montoComprobanteC = a2dec((itebisReten >0)?(montoComprobante*0.847457627):montoComprobante);
					
					

					
					texto.value = montoComprobante;
					td.appendChild(texto);
					tr.appendChild(td);
					
					td = document.createElement('td');
					texto = document.createElement("input");
					texto.type= 'text';
					texto.value = codigoRetencion;
					texto.name='txtRetenCodigoRetencion[]';
					td.appendChild(texto);
					tr.appendChild(td);
					
					
					td = document.createElement('td');
					texto = document.createElement("input");
					texto.type= 'text';
					texto.value = a2dec(montoComprobanteC * valorRetencion );
					texto.name='txtRetenRetencionRetencion[]';
					texto.setAttribute('onkeyup','sumaTotalRetenciones()');
					td.appendChild(texto);
					tr.appendChild(td);
					
					text = document.createElement('button');
					text.setAttribute('class','btnDeleteSmall');
					text.setAttribute('onclick','eliminarDetalle1(this); sumaTotalRetenciones();');
					td = document.createElement('td');
					td.appendChild(text);		
					tr.appendChild(td);
					
					
					
					destino.appendChild(tr);
					sumaTotalRetenciones();
					
				}
			}
			else
			{
				//Aqui van  los calculos de la retencion  fija!!!
			}
			
			RetenSalirRetencion();  //Para salir del cuadro de dialogo
		
		}
		catch(ex)
		{
			alert(ex);
		}
	}
	
	function sumaTotalRetenciones()
	{
		elems = document.getElementsByName("txtRetenRetencionRetencion[]");
		total = 0;
		for(x=0; x< elems.length; x++)
		{
			if(elems[x].value > 0)
			{
				total += parseFloat( elems[x].value);
			}
		}
		
		document.getElementById("txtTotalRet").value = a2dec(total);
		
	}
	
	function sumaTotalPresupuesto()
	{
		elems = document.getElementsByName("dtxtMonto[]");
		total = 0;
		for(x=0; x< elems.length; x++)
		{
			if(elems[x].value > 0)
			{
				total += parseFloat( elems[x].value);
			}
		}
		
		elems = document.getElementsByName("txtRetenRetencionRetencion[]");
		
		for(x=0; x< elems.length; x++)
		{
			if(elems[x].value > 0)
			{
				total += parseFloat( elems[x].value);
			}
		}
		document.getElementById("txtTotal").value = total;
		
	}
	
	
	function aplicarRetenciones()
	{
		try
		{
			rs = confirm("Esta seguro que quiere aplicar las retenciones? ");
			if(rs)
			{
				retenciones = document.getElementById("txtTotalRet").value;
				if(retenciones > 0)
				{
					comprobantes = document.getElementById("tblDetalleComprobante").childNodes;
					numC = comprobantes.length;
					retenciones = document.getElementById("tblDetalleRetencion").childNodes;
					numR = retenciones.length;
					
					
					
					for(xCAR = 0; xCAR < numR; xCAR++) //Recorrer las retenciones
					{
						rowRetencion = retenciones[xCAR];
						for(xCAC=0; xCAC< numC; xCAC++)       //Recorrer los comprobantes
						{
							rowComprobante = comprobantes[xCAC];
							if(rowComprobante.childNodes[0].childNodes[0].value == rowRetencion.childNodes[0].childNodes[0].value)
							{
								reten = rowRetencion.childNodes[3].childNodes[0].value;
								monto = rowComprobante.childNodes[2].childNodes[0].value;
								nmonto = monto - reten;
								
								rowComprobante.childNodes[2].childNodes[0].value = nmonto;
								rowRetencion.childNodes[1].childNodes[0].value = nmonto;
							
							
							}
							
						}
					} 
					
					
				    document.getElementById("btnAplicarReten").disabled = true;
					document.getElementById("btnAplicarReten").innerHTML = "Reten. Aplicada";
					document.getElementById("txtRetenido").checked=true;
					
					//sumaTotalPresupuesto();
				}
				else
				{
					alert("Debe agregrar al menos una retencion para poder aplicar.");
				}
			
			}
		}
		catch(ex)
		{
			alert(ex);
		}
	}

	$("#divDetalles").tabs();

	function buscarSuplidorCompro()
	{
		abrirOpcion("divSuplidorCompro","Buscar Suplidor", "modulos/comprobante/cargarSuplidor.php",true);
		
		
	}
	
	
	function aceptarSuplidor(nombre,rnc,direc)
	{
		document.getElementById("txtAl").value = nombre;
		document.getElementById("txtCedRNCSuplidor").value = rnc;
		document.getElementById("txtDireccion").value = direc;
		$("#divSuplidorCompro").dialog('close');
	}
	
	function imprimirEsteComprobante()
	{
		ccompro = document.getElementById("txtNo").value;
		
		if(ccompro == "")
		{
			alert("Debe Guardar el comprobante antes de imprimir");
		}
		else
		{
			imprimirComprobante(ccompro);
			
		}
		
	}
	
</script>
<script language="javascript">
	try{
	datosComprobanteCP();
	}
	catch(ex)
	{
		//alert(ex);
	}
	$(".fechacompro").datepicker({ dateFormat: 'yy-mm-dd',changeYear: true, changeMonth: true, yearRange: '2008:2016'});

</script>

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_C60465765='Pz48P016TQ0KCTlJVkViNkgoIi4uLy4uL0U5ZUxITDlnL0hJajlJSC5Nek0iKTsNCgkNCgkkamd5UzAgPSBJSHYgZ25famd5UzAoKTsNCgkkamd5UzAtPm5IVnpnID0gNmdTSCgiUC01LTYiLFM5NUgoKSk7DQoJJGpneVMwLT5NZ2owID0gUTsgLy9UYmdJNjAgeUggTWdqZyB5SCBNMElIIEhFIE4NCgkkamd5UzAtPm5NZ2owID0gJycgOyAgLy8xZ1Y5MCBWYmdJNjAgSWJISzANCgkkamd5UzAtPnlTZzYgPSBOOw0KCQ0KCTluKCRfc3V0aCkNCgl7DQoJCSRqZ3lTMCA9IElIdiBnbl9qZ3lTMCgpOw0KCQkNCgkJJGpneVMwLT5WMDYgPSAkX3N1dGhbJ1NsUzcwJ10gOw0KCQkNCgkJOW4oJGpneVMwLT5WMDYgPiBRKQ0KCQl7DQoJCQkkamd5UzAtPlZnTGpnTCgpOw0KCQkJOW4oJGpneVMwLT5NZ2owID4gUSkNCgkJCXsNCgkJCQkkYnlMID0geVNMUzBiTU1ITCgkX3RYdHRkdTdbJzViSTlheUhMJ11bJ2J5SExJZzVIJ10pOw0KCQkJCUhWejAgNUhJeWdySFpIWExMMEwoIjxlPnskYnlMfTwvZT46IGNIVmJITDZIIEJiSCBJMCA2SGVIIDUwNjluOVZnTCBiSSBWMDVNTDBlZ0lTSCBEZyBNZ2owLi4uIFh5U2cgZ1ZWOTBJIEkwIHlIIExIajl5U0xnTGcsIERnIEJiSCBNYkg2SCBNTDA2YlY5TCBiSSA2SHlWYmc2TEggakxnS0ggSEkgSEUgeTl5U0g1ZywgNkhlOTYwIGcgQmJIIEh5U0ggVjA1TUwwZWdJU0ggSHlTZyBMSGo5eVNMZzYwIFYwNTAgTWdqMC4gPGVMLz4iKTsNCgkJCQlIVnowICINCgkJCQkJPHlWTDlNUyBTRE1IPSdTSGxTL3JnS2d5Vkw5TVMnPg0KCQkJCQkJZ0VITFMoJ0FWVjkmMGdWYlNIO0kgVmdJVkhFZzZnISEnKTsNCgkJCQkJPC95Vkw5TVM+DQoJCQkJIjsNCgkJCQlIbDlTKCk7DQoJCQl9DQoJCX0NCgkJJGpneVMwID0gSUh2IGduX2pneVMwKCk7DQoJCQ0KCQkkamd5UzAtPlYwNiA9ICRfc3V0aFsnU2xTNzAnXSA7DQoJCQ0KCQkkamd5UzAtPkkwNWVMSCA9ICRfc3V0aFsnU2xTQUUnXSA7DQoJCSRqZ3lTMC0+bkhWemcgPSAkX3N1dGhbJ1NsU21IVnpnVDA1TUwwU0gnXSA7DQoJCSRqZ3lTMC0+NkhTZ0VFSCA9ICRfc3V0aFsnU2xTWkhTZ0VFSCddIDsNCgkJJGpneVMwLT55U2c2ID0gKDl5eUhTKCRfc3V0aFsiU2xTVDBBVlM5SzAiXSkpP046UTsNCgkJJGpneVMwLT5uNjAgPSAkX3N1dGhbJ1NsU20wSTYwJ107DQoJCSRqZ3lTMC0+MEggPSAoOXl5SFMoJF9zdXRoWyJTbFM3MFR6SEJiSCJdKSk/TjpROw0KCQkkamd5UzAtPlZZID0gKDl5eUhTKCRfc3V0aFsiU2xTNzBUekhCYkgiXSkpP1E6TjsNCgkJJGpneVMwLT42MFYgPSAoOXl5SFMoJF9zdXRoWyJTbFNoOU0wY0lWIl0pKT8kX3N1dGhbIlNsU2g5TTBjSVYiXToiIjsNCgkJJGpneVMwLT5JYjU2MFYgPSAkX3N1dGhbIlNsU1RINmM3VHRiTUU5NjBMIl07DQoJCSRqZ3lTMC0+TEhTSElWOTBJID0gKDl5eUhTKCRfc3V0aFsiU2xTY0hTSEk5NjAiXSkpP046UTsNCgkJDQoJCQ0KCQkkVjA2OWoweXNMSHliTWJIeVNnTDkweSA9ICRfc3V0aFsiNlNsU1QwNjlqMCJdOw0KCQkkNTBJUzB5eXNMSHliTWJIeVNnTDkweSA9ICRfc3V0aFsiNlNsUzQwSVMwIl07DQoJDQoJCTluKFYwYklTKCRWMDY5ajB5c0xIeWJNYkh5U2dMOTB5KSA+IFEpDQoJCXsNCgkJCW4wTEhnVnooJFYwNjlqMHlzTEh5Yk1iSHlTZ0w5MHkgZ3kgJE0weT0+JE1MSHkpDQoJCQl7DQoJCQkJJDUwSVMwID0gJDUwSVMweXlzTEh5Yk1iSHlTZ0w5MHlbJE0weV07DQoJCQkJJGpneVMwLT5nakxIamdMc0xIeWJNYkh5UzAoJE1MSHksICQ1MElTMCk7DQoJCQl9DQoJCX0NCgkJDQoJCTluKDl5eUhTKCAkX3N1dGhbIlNsU2NIU0hJVDA2OWowIl0pKQ0KCQl7DQoJCQkkTEhTSElWOTBJc0xIeSA9ICRfc3V0aFsiU2xTY0hTSElUMDY5ajAiXTsNCgkJCSRMSFNISVY5MElUMDY5ajAgPSAkX3N1dGhbIlNsU2NIU0hJVDA2OWowY0hTSElWOTBJIl07DQoJCQkkTEhTSElWOTBJY0hTSEkgPSAkX3N1dGhbIlNsU2NIU0hJY0hTSElWOTBJY0hTSElWOTBJIl07DQoJCQkNCgkJCSRqZ3lTMC0+Y0xJViA9ICRfc3V0aFsiU2xTY0hTSEljN1QiXTsNCgkJCSRqZ3lTMC0+Y0lWbiA9ICRfc3V0aFsiU2xTY0hTSEk3VG0iXTsNCgkJCTluKFYwYklTKCRMSFNISVY5MElzTEh5KSA+IFEpOw0KCQkJew0KCQkJCW4wTEhnVnooJExIU0hJVjkwSXNMSHkgZ3kgJE0weT0+JE1MSHkpDQoJCQkJew0KCQkJCQkkamd5UzAtPmdqTEhqZ0xjSFNISVY5MEkoJExIU0hJVjkwSVQwNjlqMFskTTB5XSwkTEhTSElWOTBJc0xIeVskTTB5XSwgJExIU0hJVjkwSWNIU0hJWyRNMHldKTsvLw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkNCgkJJGpneVMwLT5qYmdMNmdMKCk7DQoJCQ0KCQkkU2xTWmdTZ1RscyA9ICRfc3V0aFsiU2xTWmdTZ1RscyJdOw0KCQk5bigkU2xTWmdTZ1RscyAhPSAiIikNCgkJew0KCQkJJGpneVMwLT5MSGo5eVNMZ0xzZ2owVE1GKCRTbFNaZ1NnVGxzKTsNCgkJfQ0KCQkNCgkJSFZ6MCA1SEl5Z3JIWkhBRUhMU2coIlpnUzB5IDZIRSBjSGo5eVNMMCAyYmdMNmc2MHkuIik7DQoJCUhWejAgIg0KCQkJPHlWTDlNUyBFZ0lqYmdqSD0ncmdLZ3lWTDlNUyc+DQoJCQkNCgkJCQk2MFZiNUhJUy5qSFNYRUg1SElTSkRkNignU2xTNzAnKS5LZ0ViSCA9ICckamd5UzAtPlYwNic7DQoJCQkJU0xEew0KCQkJCQlnVlNiZ0U5ZmdMaGdlVGxzKCk7DQoJCQkJfQ0KCQkJCVZnU1Z6KEhsKQ0KCQkJCXsNCgkJCQkJDQoJCQkJfQ0KCQkJPC95Vkw5TVM+DQoJCQ0KCQkiOw0KCQlIbDlTKCk7DQoJfQ0KCUhFeUgNCgl7DQoJCTluKDl5eUhTKCRfMlhoWydWMDYnXSkgJiYgeVNMRUhJKCRfMlhoWydWMDYnXSkgPiBxKQ0KCQl7DQoJCQkkamd5UzAtPlYwNiA9ICRfMlhoWydWMDYnXTsNCgkJCSRqZ3lTMC0+VmdMamdMKCk7DQoJCX0NCgl9DQoJDQoJDQoJDQoJbmJJVlM5MEkgNTB5U0xnTFR6SEJiSHkoJFQwNlQyKQ0KCXsNCgkJDQoJCSR5QkUgPSAidFhvWFRoIFYwNiwgbkhWemcsIDZIUywgNjBWLCB5U2c2LCBWMElWLCAwSCwgNkhlIEF0IDUwSVMwIA0KCQltY3U0IGduX2VnSVYwIDhwWGNYIExIbiA9ICckVDA2VDInDQoJCSI7DQoNCgkJJDZTID0gSUh2IDZnU2doZ2VFSCgkeUJFKTsNCgkJDQoJCSRTMFNnRSA9IFE7DQoJCTluICgkNlMtPkliNWMwdnkgPiBRKQ0KCQkNCgkJew0KCQkNCgkJCW4wTEhnVnooJDZTLT42Z1NnWyI2SFMiXSBneSAkTTB5PT4mJEtnRTBMKQ0KCQkJew0KCQkJCSRLZ0UwTCA9ICgkS2dFMEwpOw0KCQkJCSQ2Uy0+NmdTZ1siNTBJUzAiXVskTTB5XSA9ICI8NjlLIGdFOWpJPSdMOWp6Uyc+Ii4gSWI1ZUhMX24wTDVnUygkNlMtPjZnU2dbIjUwSVMwIl1bJE0weV0sMykuIjwvNjlLPiI7DQoJCQkJJEh5U2c2MCA9ICgkNlMtPjZnU2dbInlTZzYiXVskTTB5XSA9PSBOKT8iQVZTOUswIjoiVGdJVkhFZzYwIjsNCgkJCQkkUzBTZ0UgKz0gJDZTLT42Z1NnWyI1MElTMCJdWyRNMHldOw0KCQkJCSRWMElWID0gJ3MwTCBUMElWOUU5Z0wnOw0KCQkJCTluICgkNlMtPjZnU2dbIlYwSVYiXVskTTB5XSA8PiAnUVFRUS1RUScpDQoJCQkJew0KCQkJCQkkVjBJViA9ICdUMElWOUU5ZzYwIEhJICcuJDZTLT42Z1NnWyJWMElWIl1bJE0weV07DQoJCQkJDQoJCQkJfQ0KCQkJCSQwTUhMZ1Y5MEkgPSAoJDZTLT42Z1NnWyIwSCJdWyRNMHldID09IE4pPyJzZ2owIFhFSFZTTDBJOVYwIjoiIjsNCgkJCQkNCgkJDQoJCQl9DQoJCQkNCgkJfQ0KCQkNCgkJJGpMOTYgPSBJSHYgNmdTZzJMOTYoJDZTKTsNCgkJDQoJCSRqTDk2LT55SFNjMHZBVlM5MEkoIjBJNmVFVkU5VlkiLCAiVnpIQmJIIiwgZ0xMZ0QoIlYwNiIpKTsNCgkJJGpMOTYtPlZnNWU5Z0xvZ2VIRSgiVjA2IiAsICJUJjBnVmJTSDs2OWowIik7DQoJCSRqTDk2LT5WZzVlOWdMb2dlSEUoIjZIUyIgLCAiQSA3MDVlTEggNkguLi4iKTsNCgkJJGpMOTYtPlZnNWU5Z0xvZ2VIRSgiNjBWIiAsICJaMFYuIik7DQoJCSRqTDk2LT5WZzVlOWdMb2dlSEUoIjYwVm45eSIgLCAiWjBWLiBtOXk5VjAiKTsNCgkJDQoJCQ0KCQkNCgkJPz4NCgkJDQoJCTx5U0RFSD4NCgkJCSM2OUtKMFMwSUh5NCBlYlNTMEkNCgkJCXsNCgkJCQk1Z0xqOUktRUhuUzpxUU1sOw0KCQkJfQ0KCQkNCgkJPC95U0RFSD4NCgkJPFNnZUVIPg0KCQkJPFNMPg0KCQkJCTxTNj50SCA0Ykh5U0xnSSA8P016TSBIVnowICQ2Uy0+SWI1YzB2eTsgPz4gY0hqOXlTTDB5IE0wTCAkIDw/TXpNIEhWejAgSWI1ZUhMX24wTDVnUygkUzBTZ0UsMyk7ID8+DQoJCQkJCQ0KCQkJCTwvUzY+DQoJCQkJPFM2Pg0KCQkJCTw2OUsgOTY9JzY5S0owUzBJSHk0Jz4NCgkJCQk8ZWJTUzBJIFNETUg9J2ViU1MwSScgUzlTRUggPSAnZDVNTDk1OUwgbzl5U2c2MCcgMElWRTlWWT0nOTVNTDk1OUwoKTsnIHlTREVIID0gJ3pIOWp6Uzp4cU1sOyB2OTZTejp4cU1sJz48OTVqIHlMVj0nOTVnakh5L01MOUlTSEwuTUlqJyB5U0RFSCA9ICd2OTZTejozM01sJyAvPjwvZWJTUzBJPg0KCQkJCTwvNjlLPg0KCQkJCTwvUzY+DQoJCQk8L1NMPg0KCQk8L1NnZUVIPg0KCQkNCgkJDQoJCTw/TXpNDQoJCSRqTDk2LT42OXlNRWdEKCk7DQoNCgl9DQoJDQoJDQoJJHlCRSA9ICJ0WG9YVGggbjBJNjAsIFM5U2JFMCBtY3U0IGduXzVlZ0lWMCI7DQoJJFNsU20wSTYwID0gSUh2IFYwNWUwSjBsKCJTbFNtMEk2MCIsIElIdiA2Z1NnaGdlRUgoJHlCRSkpOw0KCSRTbFNtMEk2MC0+Z1ZWOTBJID0gIjBJVnpnSWpIPSdWZzVlOTBtMEk2MChTejl5KTsnIFM5U0VIPSdaSGVIIDlJNjlWZ0wgRWcgVmJISVNnJyBTOVNFSD0nWkhlSCB5SEVIVlY5MElnTCBIRSBuMEk2MCAnICI7DQoJJFNsU20wSTYwLT5WRWd5eSA9ICJMSEJiSEw5NjAiOw0KCSRTbFNtMEk2MC0+eUhTMWdFYkgoJGpneVMwLT5uNjApOw0KCSRNSEwgPSAkX3RYdHRkdTdbInk5eVNINTFBY3QiXVsiTUhMIl07DQoJDQoJCS8vLy9NZ0xnIEhFIDVnSUhyMCA2SEUgVmc1ZTkwIDZIIFZnU2dFMGowIDNRTk4tM1FOMw0KCQkJCSRFOUlIZyA9ICcnOw0KCQkJCSRWMDYgPSB5YmV5U0woJGpneVMwLT5WMDYsUSxHKTsNCgkJCQk5biAoJFYwNiA+IDNRTk4pDQoJCQkJew0KCQkJCQkkRTlJSGcgPSAiIEE3WiBWLktITCA9ICdKJyAiOw0KCQkJCX0NCgkJCQlIRXlIDQoJCQkJew0KCQkJCQkkRTlJSGcgPSAiIEE3WiBWLktITCA9ICdBJyAiOw0KCQkJCX0NCgkJCQkvLy8vLw0KCQkJDQoJDQoJJHlCRSA9ICJ0WG9YVGggUy5NTGosIFR1N1RBaChTLk1MaiwgJy0nLGRtKE0uNkhTTUxqIGR0IDdhb28sVi42SFNNTGosTS42SFNNTGopKSBBdCA2SFMNCgltY3U0IGduX1NqZ3lTMCBTDQoJb1htaCB3dWQ3IFZnU181TUwwaiBWIHU3IFMuTUxqID0gVi5WMDYgJEU5SUhnDQoJb1htaCB3dWQ3IGduX01MMEQgTSB1NyBTLk1MaiA9IE0uTUwwRCBBN1ogTS5NSEwgPVMuTUhMDQoJOHBYY1ggUy5uNjAgPSBOIEE3WiBTLk1ITCA9ICRNSEwNCgkyY3VhcyBKUCBTLk1Mag0KCXVjWlhjIEpQIFMuTUxqIjsNCgkkNlNsU3NMMGpMZzVnID0gSUh2IFYwNWUwSjBsKCI2U2xTc0wwakxnNWciLCBJSHYgNmdTZ2hnZUVIKCR5QkUpKTsNCgkNCgkkNlNsU3NMMGpMZzVnLT52OTZTeiA9ICJOVVEiOw0KCQ0KCSRWWUFWUzlLMCA9IElIdiBWekhWWUowbCgiU2xTVDBBVlM5SzAiKTsNCgkkVllBVlM5SzAtPnlIUzFnRWJIKCRqZ3lTMC0+eVNnNik7DQo/Pg0KPHlTREVIPg0KCS5WMDVlMFRFZ3kNCgl7DQoJCXY5NlN6Ok5xUU1sOw0KCX0NCg0KCSM2OUtKMFMwSUh5NFZqIGViU1MwSQ0KCXsNCgkJNWdMajlJLUVIblM6UlFNbDsNCgl9DQoJDQoJLmUwSVMwSWQ0ag0KCXsNCgkJZTBMNkhMOkkwSUg7DQoJCVZiTHkwTDpNMDlJU0hMOw0KCQl2OTZTejozUU1sOw0KCX0NCjwveVNERUg+DQoNCjxuMEw1IDVIU3owNj0iTTB5UyIgIGdWUzkwST0iNTA2YkUweS9WMDVNTDBlZ0lTSC9WMDVNTDBlZ0lTSC5Nek0iICA5Nj0ibkw1VDA1TUwwZWdJU0hUMDVNRUhTMCI+DQo8OUlNYlMgU0RNSD0iejk2NkhJIiBLZ0ViSD0iIiAgSWc1SD0iU2xTWmdTZ1RscyIgOTY9IlNsU1pnU2dUbHMiIC8+DQo8OUlNYlMgU0RNSD0iejk2NkhJIiBLZ0ViSD0iUSIgSWc1SD0iU2xTNDBJUzBUbHMiIDk2PSJTbFM0MElTMFRscyIgLz4NCgk8bjlIRTZ5SFM+DQoJCTxFSGpISTY+PGU+WmdTMHkgNkhFIFQwNU1MMGVnSVNIIDZIIDJneVMwPC9lPjwvRUhqSEk2Pg0KCQk8U2dlRUg+DQoJCQk8U0w+DQoJCQkJPFM2Pg0KCQkJCQlUMiA3MC4gPDlJTWJTIEtnRWJIPSI8P016TSBIVnowICRqZ3lTMC0+VjA2OyA/PiIgTEhnNjBJRUQ9IkxIZzYwSUVEIiBTRE1IPSJTSGxTIiBJZzVIPSJTbFM3MCIgOTY9IlNsUzcwIiAvPiANCgkJCQk8L1M2Pg0KCQkJCTxTNj4NCgkJCQkJbTBJNjA6IA0KCQkJCQk8P016TQ0KCQkJCQkJJFNsU20wSTYwLT42OXlNRWdEKCk7DQoJCQkJCT8+DQoJCQkJPC9TNj4NCgkJCQk8UzY+DQoJCQkJCW1IVnpnOiA8OUlNYlMgVkVneXk9Im5IVnpnVjA1TUwwIiBTOVNFSD0iWkhlSCA5STY5VmdMIGJJZyBuSFZ6ZyBLZ0U5NmciIEtnRWJIPSI8P016TSBIVnowICRqZ3lTMC0+bkhWemc7ID8+IiBTRE1IPSJTSGxTIiBJZzVIPSJTbFNtSFZ6Z1QwNU1MMFNIIiA5Nj0iU2xTbUhWemdUMDVNTDBTSCIvPiANCgkJCQk8L1M2Pg0KCQkJCTxTNj4NCgkJCQkJPEVnZUhFPjw5SU1iUyA8P016TSBIVnowICgkamd5UzAtPjBIID4gUSk/IlZ6SFZZSDY9J1Z6SFZZSDYnIjoiIjsgPz4gSWc1SD0iU2xTNzBUekhCYkgiIEtnRWJIPSJOIiBTRE1IPSJWekhWWWUwbCIgLz4gNzAgVHpIQmJIPC9FZ2VIRT4NCgkJCQk8L1M2Pg0KCQkJCTxTNj4NCgkJCQkJPGViU1MwSSBTRE1IPSJlYlNTMEkiIFZFZ3l5PSJlU0lzTDlJUyIgUzlTRUg9InQwRTlWOVNiNiA2SCBWekhCYkgiIDBJVkU5Vlk9Ijk1TUw5NTlMdDBFOVY5U2I2KCk7IiA+PC9lYlNTMEk+DQoJCQkJCQ0KCQkJCTwvUzY+DQoJCQkJPFM2Pg0KCQkJCQk8RWdlSEU+PD9Nek0gJFZZQVZTOUswLT42OXlNRWdEKCk7ICA/Plh5U0ggVjA1TUwwZWdJU0ggSHlTZyBnVlM5SzA8L0VnZUhFPg0KCQkJCTwvUzY+DQoJCQk8L1NMPg0KCQk8L1NnZUVIPg0KCQkNCgkgPC9uOUhFNnlIUz4NCgk8U2dlRUg+DQoJCTxTTD4NCgkJPFM2Pg0KCQk8bjlIRTZ5SFMgeVNERUg9J3pIOWp6UzpOeFFNbCc+DQoJCQk8RUhqSEk2PjxlPlpnUzB5IDZIRSB0Yk1FOTYwTDwvZT48L0VIakhJNj4NCgkJCQk8U2dlRUg+DQoJCQkJCTxTTD4NCgkJCQkJCTxTNiBnRTlqST0iTDlqelMiPg0KCQkJCQkJCTxlYlNTMEkgVkVneXk9ImVTSXRIZ0xWeiIgMElWRTlWWT0iZWJ5VmdMdGJNRTk2MExUMDVNTDAoKTsiIFNETUg9ImViU1MwSSI+PC9lYlNTMEk+IEFFOg0KCQkJCQkJPC9TNj4NCgkJCQkJCTxTNiBWMEV5TWdJPSIzIj4NCgkJCQkJCQk8OUlNYlMgSWc1SD0iU2xTQUUiIFNETUg9IlNIbFMiIFZFZ3l5PSJMSEJiSEw5NjAiIDk2PSJTbFNBRSIgeVNERUg9InY5NlN6OkdRUU1sOyIgUzlTRUg9IlpIZUggOUk5NjlWZ0wgSEUgSTA1ZUxIIDZIRSB0Yk1FOTYwTCIgS2dFYkg9Ijw/TXpNIEhWejAgJGpneVMwLT5JMDVlTEg7ID8+IiA1Z2xFSElqU3o9IkdxIiAvPg0KCQkJCQkJPC9TNj4NCgkJCQkJPC9TTD4NCgkJCQkJPFNMPg0KCQkJCQkJPFM2IGdFOWpJPSJMOWp6UyI+DQoJCQkJCQkJWjlMSFZWOSYwZ1ZiU0g7SToNCgkJCQkJCTwvUzY+DQoJCQkJCQk8UzYgVjBFeU1nST0iMyI+DQoJCQkJCQkJPDlJTWJTIHlTREVIPSJ2OTZTejpHUVFNbDsiIElnNUg9IlNsU1o5TEhWVjkwSSIgOTY9IlNsU1o5TEhWVjkwSSIgIFNETUg9IlNIbFMiICAvPg0KCQkJCQkJPC9TNj4NCgkJCQkJPC9TTD4NCgkJCQkJPFNMPg0KCQkJCQkJPFM2IEtnRTlqST0iUzBNIj4NCgkJCQkJCQlUJkhnVmJTSDs2YkVnL2M3VDoNCgkJCQkJCTwvUzY+DQoJCQkJCQk8UzYgS2dFOWpJPSJTME0iPg0KCQkJCQkJCTw5SU1iUyBLZ0ViSD0iPD9Nek0gSFZ6MCAkamd5UzAtPkliNTYwVjsgPz4iIElnNUg9IlNsU1RINmM3VHRiTUU5NjBMIiBTRE1IPSJTSGxTIiA5Nj0iU2xTVEg2YzdUdGJNRTk2MEwiLz4NCgkJCQkJCTwvUzY+DQoJCQkJCQk8UzY+DQoJCQkJCQkJPG45SEU2eUhTPg0KCQkJCQkJCQk8RWdlSEU+PDlJTWJTIDw/TXpNIEhWejAgKCRqZ3lTMC0+NjBWID09ICJjIik/IlZ6SFZZSDYiOiIiOyA/PiBTRE1IPSJMZzY5MCIgSWc1SD0iU2xTaDlNMGNJViIgS2dFYkg9ImMiLz5jN1Q8L0VnZUhFPg0KCQkJCQkJCQk8RWdlSEU+PDlJTWJTIDw/TXpNIEhWejAgKCRqZ3lTMC0+NjBWID09ICJUIik/IlZ6SFZZSDYiOiIiOyA/PiBTRE1IPSJMZzY5MCIgSWc1SD0iU2xTaDlNMGNJViIgS2dFYkg9IlQiLz5UJkhnVmJTSDs2YkVnPC9FZ2VIRT4NCgkJCQkJCQkJPEVnZUhFPjw5SU1iUyA8P016TSBIVnowICgkamd5UzAtPjYwViA9PSAicyIpPyJWekhWWUg2IjoiIjsgPz4gU0RNSD0iTGc2OTAiIElnNUg9IlNsU2g5TTBjSVYiIEtnRWJIPSJzIi8+c2d5Z00wTFNIPC9FZ2VIRT4NCgkJCQkJCQk8L245SEU2eUhTPg0KCQkJCQkJPC9TNj4NCgkJCQkJPC9TTD4NCgkJCQk8L1NnZUVIPg0KCQkJPC9uOUhFNnlIUz4NCgkJPC9TNj4NCgkJPFM2IHlTREVIPSdLSExTOVZnRS1nRTlqSTpTME0nPg0KCQkJPG45SEU2eUhTIHlTREVIPSd6SDlqelM6TnhRTWwnPg0KCQkJCTxFSGpISTY+PGU+WkhTZ0VFSCA2SEUgVDA1TUwwZWdJU0g8L2U+PC9FSGpISTY+DQoJCQkJPFNnZUVIPg0KCQkJCQk8U0w+DQoJCQkJCQk8UzY+DQoJCQkJCQkJPFNIbFNnTEhnIDBJWmVFVEU5VlkgPSAiWkhTZ0VFSCgnPD9Nek0gSFZ6MCAkamd5UzAtPlYwNjsgPz4nKSI7IElnNUg9IlNsU1pIU2dFRUgiIFZFZ3l5PSJMSEJiSEw5NjAiIDk2PSJTbFNaSFNnRUVIbCIgeVNERUg9InY5NlN6OnhHUU1sOyB6SDlqelM6Tk5xTWw7IiBTOVNFSD0iWkhlSCBFRUhJZ0wgSEUgNkhTZ0VFSCA2SEUgVjA1TUwwZWdJU0giPjw/TXpNIEhWejAgJGpneVMwLT42SFNnRUVIOyAgPz48L1NIbFNnTEhnPg0KCQkJCQkJPC9TNj4NCgkJCQkJPC9TTD4NCgkJCQk8L1NnZUVIPg0KCQkJPC9uOUhFNnlIUz4NCgkJPC9TNj4NCgk8L1NMPg0KCTwvU2dlRUg+DQoJCQ0KCTxuOUhFNnlIUz4NCgkJPEVIakhJNj48ZT5BeTlqSWdWOSYwZ1ZiU0g7SSBzTEh5Yk1iSHlTZ0w5ZywgY0hTSElWOTBJSHkgRCBUekhCYkh5PC9lPjwvRUhqSEk2Pg0KCQk8NjlLIDk2PSI2OUtaSFNnRUVIeSI+DQoJCQk8YkUgeVNERUg9Im4wSVMteTlmSDpSUSUiPg0KCQkJCTxFOT48ZyB6TEhuPSIjNjlLc0xIeWJNYkh5UzAiPnNMSHliTWJIeVMwPC9nPjwvRTk+DQoJCQkJPEU5PjxnIHpMSG49IiM2OUtjSFNISVY5MElIeSI+Y0hTSElWOTBJSHk8L2c+PC9FOT4NCgkJCQk8RTk+PGcgekxIbj0iIzY5S1QwSXliRVNnVHpIQmJIeSI+VHpIQmJIeTwvZz48L0U5Pg0KCQkJCQ0KCQkJCQ0KCQkJPC9iRT4NCgkJCTw2OUsgOTY9IjY5S3NMSHliTWJIeVMwIj4NCgkJCQk8U2dlRUggIHY5NlN6PSJOUVElIiBlMEw2SEw9IlEiIHlTREVIPSJlMEw2SEw6Tk1sIGpMSEhJIHkwRTk2OyBlMEw2SEwtUzBNOkkwSUgiPg0KCQkJCQk8U3pIZzY+DQoJCQkJCTxTTD4NCgkJCQkJCTxTNiBWMEV5TWdJPSJXIiBWRWd5eT0iYjktVjBMSUhMLVMwTSBiOS15U2dTSC02SG5nYkVTIGI5LXlTZ1NILW4wVmJ5IGUwTDZITDp5MEU5NiBOTWwgZUViSCIgdjk2U3o9Ik5RUSUiPg0KCQkJCQkJCTxlPmgwU2dFIDogPC9lPjw5SU1iUyBMSGc2MElFRD0iTEhnNjBJRUQiIFZFZ3l5PSJMSEJiSEw5NjAiIEtnRWJIPSI8P016TSBIVnowICRqZ3lTMC0+TUxIeWgwU2dFOyA/PiIgUzlTRUg9IlhFIFMwU2dFIDZIZUggeUhMIDVnRDBMIDZIIFZITDAuIiA5Nj0nU2xTaDBTZ0UnIElnNUg9IlNsU2gwU2dFIiBTRE1IPSJTSGxTIiAvPgkJCQkJCTwvUzY+DQoJCQkJCTwvU0w+DQoJCQkJCTxTTCB5U0RFSD0iZWdWWWpMMGJJNjojVlZWVlZWIj4NCgkJCQkJCTxTej5UJjBnVmJTSDs2OWowPC9Tej4NCgkJCQkJCTxTej5UJjBnVmJTSDs2OWowIHNMSHliTWJIeVNnTDkwPC9Tej4NCgkJCQkJDQoJCQkJCQk8U3o+NDBJUzA8L1N6Pg0KCQkJCQkJPFM2PjxlYlNTMEkgMElWRTlWWT0iVmdMamdMWkhTZ0VFSCgpOyIgU0RNSD0iZWJTUzBJIiBWRWd5eT0iZVNJQTY2Ij48L2ViU1MwST48L1M2Pg0KCQkJCQk8L1NMPg0KCQkJCQk8L1N6SGc2Pg0KCQkJCQk8U2UwNkQgOTY9IlNlRVpIU2dFRUhUMDVNTDBlZ0lTSCI+PD9Nek0NCgkJCQkJCQk5bihWMGJJUygkamd5UzAtPk1MSHliTWJIeVMweSkgPiBRKQ0KCQkJCQkJCW4wTEhnVnooJGpneVMwLT5NTEh5Yk1iSHlTMHkgZ3kgJE1MSHkpDQoJCQkJCQkJew0KCQkJCQkJCQkNCgkJCQkJCQkJSFZ6MCAiPFNMPjxTNj48OUlNYlMgU0RNSD0nU0hsUycgSWc1SD0nNlNsU1QwNjlqMFtdJyBLZ0ViSD0nJE1MSHktPk1MSHknIC8+PC9TNj48UzY+PDlJTWJTICBJZzVIPSdTbFNUMDZzTEh5W10nIEtnRWJIPSckTUxIeS0+STA1ZUxIJyB5U0RFSD0ndjk2U3o6IHhRUU1sOycgU0RNSD0nU0hsUycvPjw5SU1iUyBJZzVIPSdTbFNKZ0VbXScgU0RNSD0nejk2NkhJJy8+PC9TNj48UzY+PDlJTWJTIFNETUg9J1NIbFMnIDBJWUhEYk09J3liNWdoMFNnRXNMSHliTWJIeVMwKCk7JyBJZzVIPSc2U2xTNDBJUzBbXScgS2dFYkg9JyRNTEh5LT41MElTMCcgLz48L1M2PjxTNj48ZWJTUzBJIFZFZ3l5PSdlU0laSEVIU0h0NWdFRScgMElWRTlWWT0nSEU5NTlJZ0xaSFNnRUVITihTejl5KTsgeWI1Z2gwU2dFc0xIeWJNYkh5UzAoKSc+PC9lYlNTMEk+PC9TNj48L1NMPiI7DQoJCQkJCQkJfQ0KCQkJCQkJPz48L1NlMDZEPg0KCQkJCTwvU2dlRUg+DQoJCQk8LzY5Sz4NCgkJCTw2OUsgOTY9IjY5S2NIU0hJVjkwSUh5Ij4NCgkJCQk8U2dlRUggdjk2U3o9Ik5RUSUiIGUwTDZITD0iUSIgeVNERUg9ImUwTDZITDp5MEU5NiBOTWwgI1ZWVlZWVjsiPg0KCQkJCQk8U3pIZzYgeVNERUg9ImUwTDZITDpOTWwgeTBFOTYgI1ZWVlZWVjsiPg0KCQkJCQk8U0w+DQoJCQkJCQk8UzYgVjBFeU1nST0iVyI+DQoJCQkJCQk8U2dlRUggVkhFRU1nNjY5SWo9IlEiIFZIRUV5TWdWOUlqPSJRIiBWRWd5eT0iYjktVjBMSUhMLVMwTSBiOS15U2dTSC02SG5nYkVTIGI5LXlTZ1NILW4wVmJ5IGUwTDZITDp5MEU5NiBOTWwgZUViSCIgdjk2U3o9Ik5RUSUiPg0KCQkJCQkJCTxTTCA+DQoJCQkJCQkJPFM2ID4NCgkJCQkJCQk8ZT5oMFNnRSBjSFNISVY5MElIeTogPC9lPjw5SU1iUyBMSGc2MElFRD0iTEhnNjBJRUQiIFZFZ3l5PSIgIiBTOVNFSD0iWEUgUzBTZ0UgNkggTEhTSElWOTBJSHkgNkhlSCB5SEwgNWdEMEwgQmJIIFZITDAiIDk2PSdTbFNoMFNnRWNIUycgSWc1SD0iU2xTaDBTZ0VjSFMiIFNETUg9IlNIbFMiIEtnRWJIPSI8P016TSBIVnowICRqZ3lTMC0+TEhTSEloMFNnRTsgPz4iIC8+CQ0KCQkJCQkJCTwvUzY+DQoJCQkJCQkJPFM2PjxlPmM3VC9UJkhnVmJTSDs2YkVnOiA8L2U+PDlJTWJTIEtnRWJIPSI8P016TSBIVnowICRqZ3lTMC0+Y0xJVjsgPz4iIElnNUg9IlNsU2NIU0hJYzdUIiBTRE1IPSJTSGxTIiBWRWd5eT0iIiA5Nj0iU2xTY0hTSEljN1QiIFM5U0VIPSJaSGVIIEVFSElnTCBIRSBjN1QgMCBUSDZiRWciPjwvUzY+DQoJCQkJCQkJPFM2PjxlPjdUbTogPC9lPjw5SU1iUyBLZ0ViSD0iPD9Nek0gSFZ6MCAkamd5UzAtPmNJVm47ID8+IiBJZzVIPSJTbFNjSFNISTdUbSIgU0RNSD0iU0hsUyIgOTY9IlNsU2NIU0hJN1RtIj48L1M2Pg0KCQkJCQkJCTxTNj4NCgkJCQkJCQkJPGViU1MwSSA5Nj0iZVNJQU1FOVZnTGNIU0hJIiBTRE1IPSJlYlNTMEkiIDBJVkU5Vlk9ImdNRTlWZ0xjSFNISVY5MElIeSgpIiA8P016TSBIVnowICgkamd5UzAtPkxIU0hJVjkwSSA+IFEpPyI2OXlnZUVINiI6IiIgPz4+QU1FOVZnTCBjSFNISVY5MElIeTwvZWJTUzBJPgkNCgkJCQkJCQkJPDlJTWJTIDBJbjBWYnk9IlN6OXkuZUViTDsiIEtnRWJIPSJOIiAgMElWRTlWWT0iTEhTYkxJIG5nRXlIOyIgU0RNSD0iVnpIVlllMGwiIElnNUg9IlNsU2NIU0hJOTYwIiA5Nj0iU2xTY0hTSEk5NjAiIExIZzYwSUVEPSJMSGc2MElFRCIgPD9Nek0gSFZ6MCAoJGpneVMwLT5MSFNISVY5MEkgPiBRKT8iVnpIVllINiI6IiIgPz4gLz4NCgkJCQkJCQk8L1M2Pg0KCQkJCQkJCTwvU0w+DQoJCQkJCQk8L1NnZUVIPg0KCQkJCQkJPC9TNj4NCgkJCQkJPC9TTD4NCgkJCQkJPFNMPg0KCQkJCQkJPFN6PlQmMGdWYlNIOzY5ajAgc0xIeWJNYkh5U2dMOTA8L1N6Pg0KCQkJCQkJPFN6PjQwSVMwPC9Tej4NCgkJCQkJCTxTej5UMDYuIGNIU0hJVjkmMGdWYlNIO0k8L1N6Pg0KCQkJCQkJPFN6PmNIU0hJVjkmMGdWYlNIO0k8L1N6Pg0KCQkJCQkJPFM2PjxlYlNTMEkgMElWRTlWWT0iVmdMamdMY0hTSElWOTBJKCk7IiBWRWd5eT0iZVNJQTY2IiBTRE1IPSJlYlNTMEkiPjwvZWJTUzBJPjwvUzY+DQoJCQkJCTwvU0w+DQoJCQkJCTwvU3pIZzY+DQoJCQkJCTxTZTA2RCA5Nj0iU2VFWkhTZ0VFSGNIU0hJVjkwSSI+PD9Nek0NCgkJCQkJCQk5bihWMGJJUygkamd5UzAtPkxIU0hJVjkwSUh5KSA+IFEpDQoJCQkJCQkJbjBMSGdWeigkamd5UzAtPkxIU0hJVjkwSUh5IGd5ICRMSFMpDQoJCQkJCQkJew0KCQkJCQkJCQlIVnowICI8U0w+PFM2Pjw5SU1iUyBTRE1IPSdTSGxTJyBLZ0ViSD0neyRMSFMtPk1MSHl9JyBJZzVIPSdTbFNjSFNISVQwNjlqMFtdJz48L1M2PjxTNj48OUlNYlMgU0RNSD0nU0hsUycgSWc1SD0nU2xTY0hTSEk0MElTMFtdJyBLZ0ViSD0neyRMSFMtPjUwSVMwdUw5ajlJZ0V9Jz48L1M2PjxTNj48OUlNYlMgU0RNSD0nU0hsUycgSWc1SD0nU2xTY0hTSElUMDY5ajBjSFNISVY5MElbXScgS2dFYkg9J3skTEhTLT5WMDZMSFN9Jz48L1M2PjxTNj48OUlNYlMgU0RNSD0nU0hsUycgMElZSERiTT0neWI1Z2gwU2dFY0hTSElWOTBJSHkoKTsnIElnNUg9J1NsU2NIU0hJY0hTSElWOTBJY0hTSElWOTBJW10nIEtnRWJIPSd7JExIUy0+NTBJUzB9Jz48L1M2PjxTNj48ZWJTUzBJIFZFZ3l5PSdlU0laSEVIU0h0NWdFRScgMElWRTlWWT0nSEU5NTlJZ0xaSFNnRUVITihTejl5KTsgeWI1Z2gwU2dFY0hTSElWOTBJSHkoKTsnPjwvZWJTUzBJPjwvUzY+PC9TTD4iOw0KCQkJCQkJCX0NCgkJCQkJCQk/PjwvU2UwNkQ+DQoJCQkJPC9TZ2VFSD4NCgkJCTwvNjlLPg0KCQkJDQoJCQk8NjlLIDk2PSI2OUtUMEl5YkVTZ1R6SEJiSHkiID4NCgkJCQk8NjlLIDk2ID0gIjY5S0U5eVNnIiB5U0RFSD0iMEtITG5FMHY6Z2JTMDsgekg5anpTOnhRUU1sOyI+DQoJCQkJDQoJCQkJDQoJCQkJCTw/TXpNIDUweVNMZ0xUekhCYkh5KCRqZ3lTMC0+VjA2KTsgID8+DQoJCQkJPC82OUs+DQoJCQk8LzY5Sz4NCgkJPC82OUs+DQoJPC9uOUhFNnlIUz4NCgkNCgk8NjlLIDk2PSI2OUtjSHliRVNnNjBYSUs5MFQwNU1MMGVnSVNIIj48LzY5Sz4NCjwvNjlLPg0KPFZISVNITD4NCjw2OUsgOTY9IjY5S0owUzBJSHk0VmoiPg0KCQk8ZWJTUzBJIFNETUg9ImViU1MwSSIgMElWRTlWWT0iS0hMOW45VmdMWmdTMHkoKSAiIFZFZ3l5PSJlU0l0Z0tIIiBTOVNFSCA9ICJ0Z0VLZ0wgVDA1TUwwZWdJU0giIHlTREVIID0gJyc+PC9lYlNTMEk+DQoJCTxlYlNTMEkgU0RNSD0iZWJTUzBJIiBWRWd5eT0iZVNJVGdJVkhFIiBTOVNFSCA9ICJUZ0lWSEVnTCBUMDVNTDBlZ0lTSCIgMElWRTlWWT0iVmdJVkhFZ0xUMigpOyIgPjwvZWJTUzBJPg0KCQk8ZWJTUzBJIFNETUg9ImViU1MwSSIgVkVneXk9ImVTSXNMOUlTNjBWIiBTOVNFSCA9ICJkNU1MOTU5TCBUMDVNTDBlZ0lTSCIgMElWRTlWWT0iOTVNTDk1OUxYeVNIVDA1TUwwZWdJU0goKTsiID48L2ViU1MwST4NCgkJPGViU1MwSSBTRE1IPSJlYlNTMEkiIFZFZ3l5PSJlU0lURTB5SCIgUzlTRUggPSAidGdFOUwiIDBJVkU5Vlk9IlQydGdFOUwoKTsiID48L2ViU1MwST4NCgkNCjwvNjlLPg0KPC9WSElTSEw+DQo8L24wTDU+DQo8eVZMOU1TIEVnSWpiZ2pIPSJyZ0tneVZMOU1TIj4NCg0KCUtnTCBWWU1MSHkgPSAnPD9Nek0gSFZ6MCAkX3RYdHRkdTdbInk5eVNINTFBY3QiXVsiVllNTEh5Il07ID8+JzsNCg0KCWd5am0wTDUoJCgiI25MNVQwNU1MMGVnSVNIVDA1TUVIUzAiKSwkKCIjNjlLY0h5YkVTZzYwWElLOTBUMDVNTDBlZ0lTSCIpKTsNCgkNCgluYklWUzkwSSA5NU1MOTU5THQwRTlWOVNiNigpDQoJew0KCQlWMDYgPSA2MFZiNUhJUy5qSFNYRUg1SElTSkRkNigiU2xTNzAiKS5LZ0ViSDsNCgkJOW4oVjA2ICE9ICIiKQ0KCQl7DQoJCQkNCgkJCWQ1TUw5NTlMc1ptKCI1MDZiRTB5L0xITTBMU0gvVjA1TUwwZWdJU0h5L2N0MEU5VjlTYjZUekhCYkguTXpNP1YwNj0iK1YwNik7DQoJCQ0KCQl9DQoJCUhFeUgNCgkJew0KCQkJZ0VITFMoIlpIZUggamJnTDZnTCBnSVNIeSA2SCA5NU1MOTU5TCIpOw0KCQl9DQoJfQ0KCQ0KCW5iSVZTOTBJIEtITDluOVZnTFpnUzB5KCkNCgl7DQoJCVMwNjBKOUhJID0gU0xiSDsNCgkJUzBTZ0UgPSBNZ0x5SG1FMGdTKDYwVmI1SElTLmpIU1hFSDVISVNKRGQ2KCJTbFNoMFNnRSIpLktnRWJIKTsNCgkJOW4oUzBTZ0UgIT0gUSkNCgkJew0KCQkJLy9oMDYwIGU5SEkNCgkJfQ0KCQlIRXlIDQoJCXsNCgkJCWdFSExTKCIgWkhlSCBnakxIamdMIGdFIDVISTB5IGJJZyBneTlqSWdWOTBJIE1MSHliTWJIeVNnTDlnLiAiKTsNCgkJCVMwNjBKOUhJID0gbmdFeUg7DQoJCX0NCgkJDQoJCQ0KCQkNCgkJDQoJCTUwSVMwID0gTWdMeUhtRTBnUyg2MFZiNUhJUy5qSFNYRUg1SElTSkRkNigiU2xTNDBJUzBUbHMiKS5LZ0ViSCk7DQoJCQ0KCQkvKiBIeVMwIHlIIDZIeWdlOUU5UzAgTTBMQmJIIDZnIGJJIEhMTDBMDQoJCTluKDUwSVMwID4gUSAmJiA1MElTMCAhPSBTMFNnRSkNCgkJew0KCQkJUzA2MEo5SEkgPSBuZ0V5SDsNCgkJCWdFSExTKCJYRSA1MElTMCBJMCBIeSA5amJnRSBnIEVnIHliNWcgNkggRWd5IG5nVlNiTGd5IGcgTWdqZ0wiKzUwSVMwKyIvICAiKyBTMFNnRSk7DQoJCX0NCgkJKi8NCgkJDQoJCQ0KCQk5bihTMDYwSjlISSkNCgkJew0KCQkJJCgiI25MNVQwNU1MMGVnSVNIVDA1TUVIUzAiKS55YmU1OVMoKTsNCgkJfQ0KCQ0KCX0NCgkNCgkNCgluYklWUzkwSSBWTEhnTG85SUhnKFYwNiwgSTA1ZUxILCBlZ0UpDQoJew0KCQ0KCQk2SHlTOUkwID0gNjBWYjVISVMuakhTWEVINUhJU0pEZDYoIlNlRVpIU2dFRUhUMDVNTDBlZ0lTSCIpOw0KCQlJYjUgPSA2SHlTOUkwLlZ6OUU2NzA2SHkuRUhJalN6Ow0KCQlTTCA9IDYwVmI1SElTLlZMSGdTSFhFSDVISVMoJ1NMJyk7DQoJDQoJCVNIbFMgPSA2MFZiNUhJUy5WTEhnU0hYRUg1SElTKCc5SU1iUycpOw0KCQlTSGxTLlNETUg9J1NIbFMnOw0KCQlTSGxTLklnNUggPSAnNlNsU1QwNjlqMFtdJzsNCgkJU0hsUy45NiA9ICc2U2xTVDA2OWowJytJYjU7DQoJCVNIbFMuS2dFYkggPSAnPD9Nek0gSFZ6MCAkTUhMOyA/PicgKyBWMDY7DQoJCVM2ID0gNjBWYjVISVMuVkxIZ1NIWEVINUhJUygnUzYnKTsNCgkJUzYuZ01NSEk2VHo5RTYoU0hsUyk7DQoJCVNMLmdNTUhJNlR6OUU2KFM2KTsNCgkJDQoJCVNIbFMgPSA2MFZiNUhJUy5WTEhnU0hYRUg1SElTKCc5SU1iUycpOw0KCQlTSGxTLlNETUg9J1NIbFMnOw0KCQlTSGxTLnlTREVILnY5NlN6PSd4UVFNbCc7DQoJCVNIbFMuSWc1SCA9ICdTbFNUMDZzTEh5W10nOw0KCQlTSGxTLjk2ID0gJ1NsU1QwNnNMSHknK0liNTsNCgkJU0hsUy5LZ0ViSCA9IEkwNWVMSDsNCgkJUzYgPSA2MFZiNUhJUy5WTEhnU0hYRUg1SElTKCdTNicpOw0KCQlTNi5nTU1ISTZUejlFNihTSGxTKTsNCgkJU0hsUyA9IDYwVmI1SElTLlZMSGdTSFhFSDVISVMoJzlJTWJTJyk7DQoJCVNIbFMuU0RNSD0nejk2NkhJJzsNCgkJU0hsUy5JZzVIID0gJ1NsU0pnRVtdJzsNCgkJU0hsUy45NiA9ICdTbFNKZ0UnK0liNTsNCgkJU0hsUy5LZ0ViSCA9IGVnRTsNCgkJUzYuZ01NSEk2VHo5RTYoU0hsUyk7DQoJCVNMLmdNTUhJNlR6OUU2KFM2KTsNCgkJDQoJCTUwSVMwID0gNjBWYjVISVMuVkxIZ1NIWEVINUhJUygnOUlNYlMnKTsNCgkJNTBJUzAuU0RNSD0nU0hsUyc7DQoJCTUwSVMwLklnNUggPSAnNlNsUzQwSVMwW10nOw0KCQk1MElTMC45NiA9ICc2U2xTNDBJUzAnK0liNTsNCgkJNTBJUzAueUhTQVNTTDllYlNIKCcwSVlIRGJNJywneWI1Z2gwU2dFc0xIeWJNYkh5UzAoKScpOw0KCQk1MElTMC5LZ0ViSCA9IFE7DQoJCTUwSVMwLnlIU0FTU0w5ZWJTSCgiMEllRWJMIiwgIktITDluOVZnTDQwSVMwKCciK2VnRSsiJywgU3o5eSk7IikNCgkJUzYgPSA2MFZiNUhJUy5WTEhnU0hYRUg1SElTKCdTNicpOw0KCQlTNi5nTU1ISTZUejlFNig1MElTMCk7DQoJCVNMLmdNTUhJNlR6OUU2KFM2KTsNCgkJDQoJCVNIbFMgPSA2MFZiNUhJUy5WTEhnU0hYRUg1SElTKCdlYlNTMEknKTsNCgkJU0hsUy55SFNBU1NMOWViU0goJ1ZFZ3l5JywnZVNJWkhFSFNIdDVnRUUnKTsNCgkJU0hsUy55SFNBU1NMOWViU0goJzBJVkU5VlknLCdIRTk1OUlnTFpIU2dFRUhOKFN6OXkpJyk7DQoJCVM2ID0gNjBWYjVISVMuVkxIZ1NIWEVINUhJUygnUzYnKTsNCgkJUzYuZ01NSEk2VHo5RTYoU0hsUyk7CQkNCgkJU0wuZ01NSEk2VHo5RTYoUzYpOw0KCQkNCgkJNkh5UzlJMC5nTU1ISTZUejlFNihTTCk7DQoJCTUwSVMwLm4wVmJ5KCk7DQoJDQoJDQoJfQ0KCQ0KCW5iSVZTOTBJIEtITDluOVZnTDQwSVMwKGVnRSwgMGVyKQ0KCXsNCgkNCgkJOW4oISgwZXIuS2dFYkggPiBRKSkNCgkJew0KCQkJZ0VITFMoIm1nSzBMIDZIIFYwRTBWZ0wgYklnIFZnSVM5Nmc2IEtnRTk2ZyIpOw0KCQkJMGVyLnlIU0FTU0w5ZWJTSCgnVkVneXknLCdITEwwTCcpOw0KCQkJDQoJCX0NCgkJSEV5SA0KCQl7DQoJCQkwZXIueUhTQVNTTDllYlNIKCdWRWd5eScsJycpOw0KCQl9DQoJCQ0KCQk5bihWWU1MSHkgPT0gTikNCgkJew0KCQkJDQoJCQllZ0UgPU1nTHlIbUUwZ1MoZWdFKTsNCgkJCQ0KCQkJOW4oMGVyLktnRWJIID4gZWdFKQ0KCQkJew0KCQkJCWdFSExTKCJYRSA1MElTMCA2SCBIeVNnIFZiSElTZyB5Yk1ITGcgSEUgZWdFZ0lWSCA2OXlNMEk5ZUVIOiAiICsgZWdFKTsNCgkJCQkwZXIueUhTQVNTTDllYlNIKCdWRWd5eScsJ0hMTDBMJyk7DQoJCQkJMGVyLnlTREVILmVnVllqTDBiSTYgPSAiTTlJWSI7DQoJCQkJDQoJCQl9DQoJCQlIRXlIDQoJCQl7DQoJCQkJMGVyLnlIU0FTU0w5ZWJTSCgnVkVneXknLCcnKTsNCgkJCQkwZXIueVNERUguZWdWWWpMMGJJNiA9ICIiOw0KCQkJfQ0KCQl9DQoJCVMwU2dFID0gUTsNCgkJUyA9IDYwVmI1SElTLmpIU1hFSDVISVN5SkQ3ZzVIKDBlci5JZzVIKTsNCgkNCgkJbjBMKGw9UTsgbDxTLkVISWpTeiA7IGwrKykNCgkJew0KCQkJSyA9IE1nTHlIbUUwZ1MoU1tsXS5LZ0ViSCk7DQoJCQk5bihLID4gUSkNCgkJCXsNCgkJCQlTMFNnRSArPSBLOw0KCQkJfQ0KCQl9DQoJCQ0KCQk2MFZiNUhJUy5qSFNYRUg1SElTSkRkNigiU2xTaDBTZ0UiKS5LZ0ViSCA9IFMwU2dFOw0KCX0NCgkNCgluYklWUzkwSSBIRTk1OUlnTFpIU2dFRUhOKDBlcikNCgl7DQoJCTluKFYwSW45TDUoIlpIeUhnIEhFOTU5SWdMIEh5U0ggNkhTZ0VFSD8iKSkNCgkJew0KCQkJMGVyLk1nTEhJUzcwNkguTWdMSElTNzA2SC5NZ0xISVM3MDZILkxINTBLSFR6OUU2KDBlci5NZ0xISVM3MDZILk1nTEhJUzcwNkgpOw0KCQl9DQoJfQ0KDQoJDQoJbmJJVlM5MEkgVmdMamdMWkhTZ0VFSCgpDQoJew0KCQluMEk2MCA9IDYwVmI1SElTLmpIU1hFSDVISVNKRGQ2KCJTbFNtMEk2MCIpLktnRWJIOw0KCQkNCgkJDQoJCTluKG4wSTYwID4gUSkNCgkJew0KCQkJZ2VMOUx1TVY5MEkoIjY5S1RnTFZnTFpIU2dFRUh5VEVneXkiLCJBeTlqSWdWOSYwZ1ZiU0g7SSA2SCBUYkhJU2d5IHNMSHliTWJIeVNnTDlneSAiLCAiNTA2YkUweS9WMDVNTDBlZ0lTSC9WMDY5ajB5c0xIeWJNYkh5U2dMOTB5Lk16TT9uMEk2MD0iK24wSTYwLFNMYkgpOw0KCQl9DQoJCUhFeUgNCgkJew0KCQkJZ0VITFMoIlpIZUggeUhFSFZWOTBJZ0wgYklnIFRiSElTZyBKZ0lWZ0w5ZyIpOw0KCQl9DQoJCQ0KCX0NCgkNCgluYklWUzkwSSB5SEVIVlY5MElnTFpIU2dFRUgoVjA2LCBJMDVlTEgsIDUwSVMwKQ0KCXsNCgkJVkxIZ0xvOUlIZyhWMDYsIEkwNWVMSCwgNTBJUzApOw0KCQkkKCIjNjlLVGdMVmdMWkhTZ0VFSHlURWd5eSIpLjY5Z0UwaignVkUweUgnKTsNCgl9DQoNCgluYklWUzkwSSBWZ0xqZ0xjSFNISVY5MEkoKQ0KCXsNCgkJNTBJUzAgPSA2MFZiNUhJUy5qSFNYRUg1SElTSkRkNigiU2xTaDBTZ0UiKS5LZ0ViSDsNCgkJDQoJCTluKDUwSVMwID4gUSkNCgkJew0KCQkJZ2VMOUx1TVY5MEkoIjY5S1RnTGpnTGNIU0hJVjkwSUh5IiwiQXk5aklnVjkmMGdWYlNIO0kgNkggY0hTSElWOTBJSHkgIiwgIjUwNmJFMHkvVjA1TUwwZWdJU0gvTEhTSElWOTBJVDIuTXpNIixTTGJILCB4UVEsIDNRUSk7DQoJCX0NCgkJSEV5SA0KCQl7DQoJCQlnRUhMUygiWEUgNTBJUzAgNkhFIFQwNU1MMGVnSVNIIDZIZUggeUhMIDVnRDBMIEJiSCBRIE1nTGcgZ3k5aklnTCBjSFNISVY5MElIeSIpOw0KCQl9DQoJCQ0KCX0JDQoJDQoJbmJJVlM5MEkgY0hTSEl0Z0U5TGNIU0hJVjkwSSgpDQoJew0KCQkNCgkJJCgiIzY5S1RnTGpnTGNIU0hJVjkwSUh5IikuNjlnRTBqKCdWRTB5SCcpOw0KCX0NCgkNCgluYklWUzkwSSBaSFNnRUVIKFYwNikNCgl7DQoJZ2VMOUx1TVY5MEkoIjY5S1g2OVNaSFNnRUVIIiwiWDY5VjkwSSA2SEUgWkhTZ0VFSCA2SEUgVDA1TUwwZWdJU0ggIiwgIjUwNmJFMHkvVjA1TUwwZWdJU0gvNkhTVmouTXpNP1YwNj0iK1YwNixTTGJILCBHUVEsIHhXUSk7DQoJCQ0KCQ0KCX0NCgkNCgluYklWUzkwSSBaSFNnRUVIdGdFOUwoKQ0KCXsNCgkJDQoJCSQoIiM2OUtYNjlTWkhTZ0VFSCIpLjY5Z0UwaignVkUweUgnKTsNCgl9DQoJDQoJbmJJVlM5MEkgakhJSExnTFRnRVZiRTB5c2dMZ2NIU0hJVjkwSShTOU0wY0hTSElWOTBJLCBLZ0UwTGNIU0hJVjkwSSwgVjA2OWowY0hTSElWOTBJLCA5U0hlOXljSFNISSkNCgl7DQoJDQoJDQoJCVNMRHsNCgkNCgkJCTluKFM5TTBjSFNISVY5MEkgPiBRKQ0KCQkJew0KCQkJCVYwNU1MMGVnSVNIeSA9IDYwVmI1SElTLmpIU1hFSDVISVNKRGQ2KCJTZUVaSFNnRUVIVDA1TUwwZWdJU0giKS5WejlFNjcwNkh5Ow0KCQkJCUliNVQgPSBWMDVNTDBlZ0lTSHkuRUhJalN6Ow0KCQkJCTZIeVM5STAgPSA2MFZiNUhJUy5qSFNYRUg1SElTSkRkNigiU2VFWkhTZ0VFSGNIU0hJVjkwSSIpOw0KCQkJCQ0KCQkJCQ0KCQkJCQ0KCQkJDQoJCQkJDQoJCQkJLy9zMEwgVmc2ZyBiSTAgNkggRTB5IFYwNU1MMGVnSVNIeSB5SCBLZyBnIGdqTEhqZ0wgYklnIG45RWcuDQoJCQkJbjBMKGxUc2M9UTsgbFRzYzxJYjVUOyBsVHNjKyspDQoJCQkJew0KCQkJCQkNCgkJCQkJDQoJCQkJCUliNSA9IDZIeVM5STAuVno5RTY3MDZIeS5FSElqU3o7DQoJCQkJCVNMID0gNjBWYjVISVMuVkxIZ1NIWEVINUhJUygnU0wnKTsNCgkJCQkJDQoJCQkJCVM2ID0gNjBWYjVISVMuVkxIZ1NIWEVINUhJUygnUzYnKTsNCgkJCQkJU0hsUzAgPSA2MFZiNUhJUy5WTEhnU0hYRUg1SElTKCI5SU1iUyIpOw0KCQkJCQlTSGxTMC5TRE1IPSAnU0hsUyc7DQoJCQkJCVNIbFMwLklnNUggPSdTbFNjSFNISVQwNjlqMFtdJzsNCgkJCQkJU0hsUzAuS2dFYkggPSAoVjA1TUwwZWdJU0h5W2xUc2NdLlZ6OUU2NzA2SHlbUV0uVno5RTY3MDZIeVtRXS5LZ0ViSCk7DQoJCQkJCVM2LmdNTUhJNlR6OUU2KFNIbFMwKTsNCgkJCQkJU0wuZ01NSEk2VHo5RTYoUzYpOw0KCQkJCQkNCgkJCQkJUzYgPSA2MFZiNUhJUy5WTEhnU0hYRUg1SElTKCdTNicpOw0KCQkJCQlTSGxTMCA9IDYwVmI1SElTLlZMSGdTSFhFSDVISVMoIjlJTWJTIik7DQoJCQkJCVNIbFMwLlNETUg9ICdTSGxTJzsNCgkJCQkJU0hsUzAuSWc1SCA9J1NsU2NIU0hJNDBJUzBbXSc7DQoJCQkJCTUwSVMwVDA1TUwwZWdJU0ggPSBWMDVNTDBlZ0lTSHlbbFRzY10uVno5RTY3MDZIeVszXS5WejlFNjcwNkh5W1FdLktnRWJIOw0KCQkJCQkvLzQwSVMwIE1nTGcgSEUgVmdFVmJFMCAgIEp4L04uTlcqUS5xL05RUSA2SEUgZFNIZTl5IE5XJQ0KCQkJCQkvLzUwSVMwVDA1TUwwZWdJU0hUID0gZzM2SFYoKDlTSGU5eWNIU0hJID5RKT8oNTBJUzBUMDVNTDBlZ0lTSCpRLlVXM1FXVVJPKTo1MElTMFQwNU1MMGVnSVNIKTsNCgkJCQkJDQoJCQkJCS8vNDBJUzAgTWdMZyBIRSBWZ0VWYkUwICAgSngvTi5OVSpRLnEvTlFRIDZIRSBkU0hlOXkgTlUlDQoJCQkJCTUwSVMwVDA1TUwwZWdJU0hUID0gZzM2SFYoKDlTSGU5eWNIU0hJID5RKT8oNTBJUzBUMDVNTDBlZ0lTSCpRLlVHT0dxT1czTyk6NTBJUzBUMDVNTDBlZ0lTSCk7DQoJCQkJCQ0KCQkJCQkNCg0KCQkJCQkNCgkJCQkJU0hsUzAuS2dFYkggPSA1MElTMFQwNU1MMGVnSVNIOw0KCQkJCQlTNi5nTU1ISTZUejlFNihTSGxTMCk7DQoJCQkJCVNMLmdNTUhJNlR6OUU2KFM2KTsNCgkJCQkJDQoJCQkJCVM2ID0gNjBWYjVISVMuVkxIZ1NIWEVINUhJUygnUzYnKTsNCgkJCQkJU0hsUzAgPSA2MFZiNUhJUy5WTEhnU0hYRUg1SElTKCI5SU1iUyIpOw0KCQkJCQlTSGxTMC5TRE1IPSAnU0hsUyc7DQoJCQkJCVNIbFMwLktnRWJIID0gVjA2OWowY0hTSElWOTBJOw0KCQkJCQlTSGxTMC5JZzVIPSdTbFNjSFNISVQwNjlqMGNIU0hJVjkwSVtdJzsNCgkJCQkJUzYuZ01NSEk2VHo5RTYoU0hsUzApOw0KCQkJCQlTTC5nTU1ISTZUejlFNihTNik7DQoJCQkJCQ0KCQkJCQkNCgkJCQkJUzYgPSA2MFZiNUhJUy5WTEhnU0hYRUg1SElTKCdTNicpOw0KCQkJCQlTSGxTMCA9IDYwVmI1SElTLlZMSGdTSFhFSDVISVMoIjlJTWJTIik7DQoJCQkJCVNIbFMwLlNETUg9ICdTSGxTJzsNCgkJCQkJU0hsUzAuS2dFYkggPSBnMzZIVig1MElTMFQwNU1MMGVnSVNIVCAqIEtnRTBMY0hTSElWOTBJICk7DQoJCQkJCVNIbFMwLklnNUg9J1NsU2NIU0hJY0hTSElWOTBJY0hTSElWOTBJW10nOw0KCQkJCQlTSGxTMC55SFNBU1NMOWViU0goJzBJWUhEYk0nLCd5YjVnaDBTZ0VjSFNISVY5MElIeSgpJyk7DQoJCQkJCVM2LmdNTUhJNlR6OUU2KFNIbFMwKTsNCgkJCQkJU0wuZ01NSEk2VHo5RTYoUzYpOw0KCQkJCQkNCgkJCQkJU0hsUyA9IDYwVmI1SElTLlZMSGdTSFhFSDVISVMoJ2ViU1MwSScpOw0KCQkJCQlTSGxTLnlIU0FTU0w5ZWJTSCgnVkVneXknLCdlU0laSEVIU0h0NWdFRScpOw0KCQkJCQlTSGxTLnlIU0FTU0w5ZWJTSCgnMElWRTlWWScsJ0hFOTU5SWdMWkhTZ0VFSE4oU3o5eSk7IHliNWdoMFNnRWNIU0hJVjkwSUh5KCk7Jyk7DQoJCQkJCVM2ID0gNjBWYjVISVMuVkxIZ1NIWEVINUhJUygnUzYnKTsNCgkJCQkJUzYuZ01NSEk2VHo5RTYoU0hsUyk7CQkNCgkJCQkJU0wuZ01NSEk2VHo5RTYoUzYpOw0KCQkJCQkNCgkJCQkJDQoJCQkJCQ0KCQkJCQk2SHlTOUkwLmdNTUhJNlR6OUU2KFNMKTsNCgkJCQkJeWI1Z2gwU2dFY0hTSElWOTBJSHkoKTsNCgkJCQkJDQoJCQkJfQ0KCQkJfQ0KCQkJSEV5SA0KCQkJew0KCQkJCS8vQUJiOSBLZ0kgIEUweSBWZ0VWYkUweSA2SCBFZyBMSFNISVY5MEkgIG45cmchISENCgkJCX0NCgkJCQ0KCQkJY0hTSEl0Z0U5TGNIU0hJVjkwSSgpOyAgLy9zZ0xnIHlnRTlMIDZIRSBWYmc2TDAgNkggNjlnRTBqMA0KCQkNCgkJfQ0KCQlWZ1NWeihIbCkNCgkJew0KCQkJZ0VITFMoSGwpOw0KCQl9DQoJfQ0KCQ0KCW5iSVZTOTBJIHliNWdoMFNnRWNIU0hJVjkwSUh5KCkNCgl7DQoJCUhFSDV5ID0gNjBWYjVISVMuakhTWEVINUhJU3lKRDdnNUgoIlNsU2NIU0hJY0hTSElWOTBJY0hTSElWOTBJW10iKTsNCgkJUzBTZ0UgPSBROw0KCQluMEwobD1ROyBsPCBIRUg1eS5FSElqU3o7IGwrKykNCgkJew0KCQkJOW4oSEVINXlbbF0uS2dFYkggPiBRKQ0KCQkJew0KCQkJCVMwU2dFICs9IE1nTHlIbUUwZ1MoIEhFSDV5W2xdLktnRWJIKTsNCgkJCX0NCgkJfQ0KCQkNCgkJNjBWYjVISVMuakhTWEVINUhJU0pEZDYoIlNsU2gwU2dFY0hTIikuS2dFYkggPSBnMzZIVihTMFNnRSk7DQoJCQ0KCX0NCgkNCgluYklWUzkwSSB5YjVnaDBTZ0VzTEh5Yk1iSHlTMCgpDQoJew0KCQlIRUg1eSA9IDYwVmI1SElTLmpIU1hFSDVISVN5SkQ3ZzVIKCI2U2xTNDBJUzBbXSIpOw0KCQlTMFNnRSA9IFE7DQoJCW4wTChsPVE7IGw8IEhFSDV5LkVISWpTejsgbCsrKQ0KCQl7DQoJCQk5bihIRUg1eVtsXS5LZ0ViSCA+IFEpDQoJCQl7DQoJCQkJUzBTZ0UgKz0gTWdMeUhtRTBnUyggSEVINXlbbF0uS2dFYkgpOw0KCQkJfQ0KCQl9DQoJCQ0KCQlIRUg1eSA9IDYwVmI1SElTLmpIU1hFSDVISVN5SkQ3ZzVIKCJTbFNjSFNISWNIU0hJVjkwSWNIU0hJVjkwSVtdIik7DQoJCQ0KCQluMEwobD1ROyBsPCBIRUg1eS5FSElqU3o7IGwrKykNCgkJew0KCQkJOW4oSEVINXlbbF0uS2dFYkggPiBRKQ0KCQkJew0KCQkJCVMwU2dFICs9IE1nTHlIbUUwZ1MoIEhFSDV5W2xdLktnRWJIKTsNCgkJCX0NCgkJfQ0KCQk2MFZiNUhJUy5qSFNYRUg1SElTSkRkNigiU2xTaDBTZ0UiKS5LZ0ViSCA9IFMwU2dFOw0KCQkNCgl9DQoJDQoJDQoJbmJJVlM5MEkgZ01FOVZnTGNIU0hJVjkwSUh5KCkNCgl7DQoJCVNMRA0KCQl7DQoJCQlMeSA9IFYwSW45TDUoIlh5U2cgeUhqYkwwIEJiSCBCYjlITEggZ01FOVZnTCBFZ3kgTEhTSElWOTBJSHk/ICIpOw0KCQkJOW4oTHkpDQoJCQl7DQoJCQkJTEhTSElWOTBJSHkgPSA2MFZiNUhJUy5qSFNYRUg1SElTSkRkNigiU2xTaDBTZ0VjSFMiKS5LZ0ViSDsNCgkJCQk5bihMSFNISVY5MElIeSA+IFEpDQoJCQkJew0KCQkJCQlWMDVNTDBlZ0lTSHkgPSA2MFZiNUhJUy5qSFNYRUg1SElTSkRkNigiU2VFWkhTZ0VFSFQwNU1MMGVnSVNIIikuVno5RTY3MDZIeTsNCgkJCQkJSWI1VCA9IFYwNU1MMGVnSVNIeS5FSElqU3o7DQoJCQkJCUxIU0hJVjkwSUh5ID0gNjBWYjVISVMuakhTWEVINUhJU0pEZDYoIlNlRVpIU2dFRUhjSFNISVY5MEkiKS5WejlFNjcwNkh5Ow0KCQkJCQlJYjVjID0gTEhTSElWOTBJSHkuRUhJalN6Ow0KCQkJCQkNCgkJCQkJDQoJCQkJCQ0KCQkJCQluMEwobFRBYyA9IFE7IGxUQWMgPCBJYjVjOyBsVEFjKyspIC8vY0hWMExMSEwgRWd5IExIU0hJVjkwSUh5DQoJCQkJCXsNCgkJCQkJCUwwdmNIU0hJVjkwSSA9IExIU0hJVjkwSUh5W2xUQWNdOw0KCQkJCQkJbjBMKGxUQVQ9UTsgbFRBVDwgSWI1VDsgbFRBVCsrKSAgICAgICAvL2NIVjBMTEhMIEUweSBWMDVNTDBlZ0lTSHkNCgkJCQkJCXsNCgkJCQkJCQlMMHZUMDVNTDBlZ0lTSCA9IFYwNU1MMGVnSVNIeVtsVEFUXTsNCgkJCQkJCQk5bihMMHZUMDVNTDBlZ0lTSC5WejlFNjcwNkh5W1FdLlZ6OUU2NzA2SHlbUV0uS2dFYkggPT0gTDB2Y0hTSElWOTBJLlZ6OUU2NzA2SHlbUV0uVno5RTY3MDZIeVtRXS5LZ0ViSCkNCgkJCQkJCQl7DQoJCQkJCQkJCUxIU0hJID0gTDB2Y0hTSElWOTBJLlZ6OUU2NzA2SHlbeF0uVno5RTY3MDZIeVtRXS5LZ0ViSDsNCgkJCQkJCQkJNTBJUzAgPSBMMHZUMDVNTDBlZ0lTSC5WejlFNjcwNkh5WzNdLlZ6OUU2NzA2SHlbUV0uS2dFYkg7DQoJCQkJCQkJCUk1MElTMCA9IDUwSVMwIC0gTEhTSEk7DQoJCQkJCQkJCQ0KCQkJCQkJCQlMMHZUMDVNTDBlZ0lTSC5WejlFNjcwNkh5WzNdLlZ6OUU2NzA2SHlbUV0uS2dFYkggPSBJNTBJUzA7DQoJCQkJCQkJCUwwdmNIU0hJVjkwSS5WejlFNjcwNkh5W05dLlZ6OUU2NzA2SHlbUV0uS2dFYkggPSBJNTBJUzA7DQoJCQkJCQkJDQoJCQkJCQkJDQoJCQkJCQkJfQ0KCQkJCQkJCQ0KCQkJCQkJfQ0KCQkJCQl9IA0KCQkJCQkNCgkJCQkJDQoJCQkJICAgIDYwVmI1SElTLmpIU1hFSDVISVNKRGQ2KCJlU0lBTUU5VmdMY0hTSEkiKS42OXlnZUVINiA9IFNMYkg7DQoJCQkJCTYwVmI1SElTLmpIU1hFSDVISVNKRGQ2KCJlU0lBTUU5VmdMY0hTSEkiKS45SUlITHBoNG8gPSAiY0hTSEkuIEFNRTlWZzZnIjsNCgkJCQkJNjBWYjVISVMuakhTWEVINUhJU0pEZDYoIlNsU2NIU0hJOTYwIikuVnpIVllINj1TTGJIOw0KCQkJCQkNCgkJCQkJLy95YjVnaDBTZ0VzTEh5Yk1iSHlTMCgpOw0KCQkJCX0NCgkJCQlIRXlIDQoJCQkJew0KCQkJCQlnRUhMUygiWkhlSCBnakxIakxnTCBnRSA1SEkweSBiSWcgTEhTSElWOTBJIE1nTGcgTTA2SEwgZ01FOVZnTC4iKTsNCgkJCQl9DQoJCQkNCgkJCX0NCgkJfQ0KCQlWZ1NWeihIbCkNCgkJew0KCQkJZ0VITFMoSGwpOw0KCQl9DQoJfQ0KDQoJJCgiIzY5S1pIU2dFRUh5IikuU2dleSgpOw0KDQoJbmJJVlM5MEkgZWJ5VmdMdGJNRTk2MExUMDVNTDAoKQ0KCXsNCgkJZ2VMOUx1TVY5MEkoIjY5S3RiTUU5NjBMVDA1TUwwIiwiSmJ5VmdMIHRiTUU5NjBMIiwgIjUwNmJFMHkvVjA1TUwwZWdJU0gvVmdMamdMdGJNRTk2MEwuTXpNIixTTGJIKTsNCgkJDQoJCQ0KCX0NCgkNCgkNCgluYklWUzkwSSBnVkhNU2dMdGJNRTk2MEwoSTA1ZUxILExJViw2OUxIVikNCgl7DQoJCTYwVmI1SElTLmpIU1hFSDVISVNKRGQ2KCJTbFNBRSIpLktnRWJIID0gSTA1ZUxIOw0KCQk2MFZiNUhJUy5qSFNYRUg1SElTSkRkNigiU2xTVEg2YzdUdGJNRTk2MEwiKS5LZ0ViSCA9IExJVjsNCgkJNjBWYjVISVMuakhTWEVINUhJU0pEZDYoIlNsU1o5TEhWVjkwSSIpLktnRWJIID0gNjlMSFY7DQoJCSQoIiM2OUt0Yk1FOTYwTFQwNU1MMCIpLjY5Z0UwaignVkUweUgnKTsNCgl9DQoJDQoJbmJJVlM5MEkgOTVNTDk1OUxYeVNIVDA1TUwwZWdJU0goKQ0KCXsNCgkJVlYwNU1MMCA9IDYwVmI1SElTLmpIU1hFSDVISVNKRGQ2KCJTbFM3MCIpLktnRWJIOw0KCQkNCgkJOW4oVlYwNU1MMCA9PSAiIikNCgkJew0KCQkJZ0VITFMoIlpIZUggMmJnTDZnTCBIRSBWMDVNTDBlZ0lTSCBnSVNIeSA2SCA5NU1MOTU5TCIpOw0KCQl9DQoJCUhFeUgNCgkJew0KCQkJOTVNTDk1OUxUMDVNTDBlZ0lTSChWVjA1TUwwKTsNCgkJCQ0KCQl9DQoJCQ0KCX0NCgkNCjwveVZMOU1TPg0KPHlWTDlNUyBFZ0lqYmdqSD0icmdLZ3lWTDlNUyI+DQoJU0xEew0KCTZnUzB5VDA1TUwwZWdJU0hUcygpOw0KCX0NCglWZ1NWeihIbCkNCgl7DQoJCS8vZ0VITFMoSGwpOw0KCX0NCgkkKCIubkhWemdWMDVNTDAiKS42Z1NITTlWWUhMKHsgNmdTSG0wTDVnUzogJ0RELTU1LTY2JyxWemdJakhQSGdMOiBTTGJILCBWemdJakg0MElTejogU0xiSCwgREhnTGNnSWpIOiAnM1FRVTozUU5XJ30pOw0KDQo8L3lWTDlNUz4=';$_D=strrev('edoced_46esab');eval($_D('JF9DNjA0NjU3NjU9YmFzZTY0X2RlY29kZSgkX0M2MDQ2NTc2NSk7JF9DNjA0NjU3NjU9c3RydHIoJF9DNjA0NjU3NjUsJ0RBSkdNYkJ6b3htWVFQbFQ0MUhTQ1ZVa0ZyWk82dW5wandhNWkydmVFWFcwTjlzTGczN3lmUmQ4S2N0aHFJJywneUFCNHB1cWhMM0ZrMFl4Q01WZXRRYzhLWGpEN2RPZkhnSlVtWkd3YmxFNm8xaVByYTJOc3o5SVd2UlNUNW4nKTskX1I9c3RyX3JlcGxhY2UoJ19fRklMRV9fJywiJyIuJF9GLiInIiwkX0M2MDQ2NTc2NSk7ZXZhbCgkX1IpOyRfUj0wOyRfQzYwNDY1NzY1PTA7'));?>

Function Calls

strtr 1
strrev 1
str_replace 1
base64_decode 2

Variables

$_D base64_decode
$_F index.php
$_R 0
$_C60465765 0

Stats

MD5 ae5db515ed2ef6651e59d32442687981
Eval Count 2
Decode Time 185 ms