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__;$_C1767279132='Pz48P0RoRA0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t..
Decoded Output download
function ecf_markup_generator( $fid, $rnd , $val = null, $frm = null, $tp = null, $iswidget = null, $modal = null ) {
ob_start();
// Load form in Modal @since 1.0.8.3
if ( $modal ) {
$nohdr = '';
$nopddng = 'padding: 0px !important;';
$hide = 'display: none !important;';
$hidervs = 'display: none !important;';
} else {
if ( $tp ) {
$nopddng = 'padding: 0px !important;';
$nohdr = 'display: none !important;';
$hide = '';
$hidervs = 'display: none !important;';
} else {
$nopddng = '';
$nohdr = '';
$hide = 'display: none !important;';
$hidervs = '';
}
}
// @since 1.0.7.15 ( Addons )
if ( $tp != 'sticky' && $rnd != 'preview' ) {
if ( has_action( 'ecf_form_visitors_analytics' ) ) {
do_action( 'ecf_form_visitors_analytics', $fid );
}
}
$opt = ecf_opt_generator( $fid, $rnd, $val, $frm );
$frmArray = json_decode( trim ( $opt['frmformat'] ), true);
// @since 1.0.8.1
if( $opt['fo_head_img'] ) {
wp_enqueue_script( 'ecf-lazyload' );
if ( $opt['fo_is_head_ttl'] == 'on') {
if ( $opt['fo_head_txt'] && $opt['fo_head_txt'] != 'none' ) {
$isheader = ecf_header_img_helper( $opt['fo_head_img'], $opt['fo_head_img_mw'], $opt['fo_head_img_pos'], $nohdr, $opt['fo_head_txt'], $rnd );
}
elseif ( $opt['fo_head_txt'] == '' && get_the_title( $fid ) ) {
$isheader = ecf_header_img_helper( $opt['fo_head_img'], $opt['fo_head_img_mw'], $opt['fo_head_img_pos'], $nohdr, esc_html( esc_js( get_the_title( $fid ) ) ), $rnd );
}
else {
$isheader = ecf_header_img_helper( $opt['fo_head_img'], $opt['fo_head_img_mw'], $opt['fo_head_img_pos'], $nohdr, null , $rnd );
}
} else {
$isheader = ecf_header_img_helper( $opt['fo_head_img'], $opt['fo_head_img_mw'], $opt['fo_head_img_pos'], $nohdr, null, $rnd );
}
} else {
if ( $opt['fo_is_head_ttl'] == 'on') {
if ( $opt['fo_head_txt'] && $opt['fo_head_txt'] != 'none' ) {
$isheader = '<header style="'.$nohdr.'">'.$opt['fo_head_txt'].'</header>';
}
elseif ( $opt['fo_head_txt'] == '' && get_the_title( $fid ) ) {
$isheader = '<header style="'.$nohdr.'">'.esc_html( esc_js( get_the_title( $fid ) ) ).'</header>';
}
else {
$isheader = '';
}
} else {
$isheader = '';
}
}
if ( $opt['iscaptcha'] == 'on' && $opt['captchastyle'] == 'simple' ) {
set_transient( 'ecf_captcha_transient', 'on', 60*5 );
} else {
delete_transient( 'ecf_captcha_transient' );
}
?>
<!-- START Dynamic CSS for Form ID: <?php echo $fid; ?> -->
<style><?php echo ecf_form_style_generator( $rnd, $opt, $iswidget, $modal ); ?></style>
<!-- END Dynamic CSS for Form ID: <?php echo $fid; ?> -->
<!-- START JS for Form ID: <?php echo $fid; ?> -->
<?php if ( $modal ) { // Form Modal @since 1.8.0.3
//wp_enqueue_script( 'ecf-easing', plugins_url( 'js/jquery/jquery.easing.1.3.js' , __DIR__ ), false, ECF_VERSION );
echo '<style>
#form-'.$rnd.' {
z-index: 9999991;
position: absolute;
width: 100%;
max-width: '.$opt['fo_width'].'px;
}
#'.$rnd.'-form-modal-overlay {
z-index: 999999;
position: fixed;
display: none;
top: 0;
left: 0;
cursor : pointer;
width: 100%;
height: 100%;
background: '.( $opt['fo_ovrlay_bg_col'] ? 'rgba('.ecf_hex2rgb( $opt['fo_ovrlay_bg_col'] ).',0.7)' : 'rgba(0,0,0,0.7)' ).';
}
.ecf-'.$fid.'-modal-opener { cursor: pointer; color: '.( $opt['fo_ovrlay_link_col'] ? $opt['fo_ovrlay_link_col'] : '#cf4343' ).' !important; }
.ecf-'.$fid.'-modal-opener:hover { text-decoration: underline;}
</style>
';
} ?>
<script type="text/javascript">
jQuery(document).ready(function($) {
var <?php echo $rnd; ?>time = '<?php echo date("h:i:s"); ?>';
<?php if ( empty( $modal ) && empty( $tp )) { // Form Modal @since 1.8.0.3 ?>
jQuery("#preloader-<?php echo $rnd; ?>").fadeOut(1500, function () {
jQuery("#ecf-form-<?php echo $rnd; ?>, #form-<?php echo $rnd; ?>").fadeIn(300);
});
<?php }
if ( $modal && empty( $tp ) ) { // Form Modal @since 1.8.0.3 ?>
// Start Popup Markup
form<?php echo $rnd; ?> = $('#form-<?php echo $rnd; ?>');
overlay<?php echo $rnd; ?> = $('#<?php echo $rnd; ?>-form-modal-overlay');
overlay<?php echo $rnd; ?>.appendTo(document.body);
form<?php echo $rnd; ?>.appendTo(document.body);
$('#<?php echo $rnd; ?>-modal-opener').on('click', function() {
// Set Variable
var offset = $(document).scrollTop();
var currentTop = offset;
var curLeft = Math.max(0, $(window).width());
var finaLeft = curLeft/2-(form<?php echo $rnd; ?>.outerWidth()/2);
// Show up overlay + form
overlay<?php echo $rnd; ?>.fadeIn();
form<?php echo $rnd; ?>.fadeIn();
// Set up Form CSS
form<?php echo $rnd; ?>.css({
'top': currentTop - form<?php echo $rnd; ?>.outerHeight() - 60,
'left': overlay<?php echo $rnd; ?>.outerWidth()/2 - form<?php echo $rnd; ?>.outerWidth()/2,
});
// Animate form to slide from Top pos
form<?php echo $rnd; ?>.animate({top: currentTop + 30},{duration:1000/*, easing: 'easeOutBounce'*/});
}); // End Modal Opener
//Overlay onClick action
overlay<?php echo $rnd; ?>.on('click', function() {
overlay<?php echo $rnd; ?>.fadeOut();
form<?php echo $rnd; ?>.fadeOut();
$('#form-<?php echo $rnd; ?> label.input').removeClass('state-error');
});
// End of Popup Markup
<?php }
if ( $opt['cusmaxlimit'] != '' && $opt['cusmaxlimit'] != '0' ) { $maxlmt = ecf_return_bytes( $opt['cusmaxlimit'].substr(ini_get( 'upload_max_filesize' ), -1) ); $maxstr = $opt['cusmaxlimit'].substr(ini_get( 'upload_max_filesize' ), -1); } else { $maxlmt = ecf_return_bytes( ini_get( 'upload_max_filesize' ) ); $maxstr = ini_get( 'upload_max_filesize' ); } ?>
var maxupsize = '<?php echo $maxlmt; ?>';
var maxupsizeStr = '<?php echo $maxstr; ?>';
$( '.ladda-button' ).ladda( 'bind' );
var files;
$(function() {
<?php if ( $opt['iscaptcha'] == 'on' && $opt['captchastyle'] == 'v1' ) {
ecf_captcha_helper_head( $fid, $opt['captchastyle'], $opt['captchapub'], $opt['captchathm'] );
} ?>
$('input[type=file]').on('change', prepareUpload);
function prepareUpload(event)
{
files = event.target.files;
$.each(files, function(key, value) {
if ( files != null ) {
if (files[key].size > maxupsize ) {
$(".attach<?php echo $fid; ?>").next().gnotify(files[key].name+" exceeds the maximum upload size ( Max: "+maxupsizeStr+" )",{
style: "nbootstrap",
elementPosition: 'top center',
className: 'error'});
files = null;
}
}
});
if ( files != null ) {
$('#atc<?php echo $rnd; ?>').val(files.length+' file(s) selected');
} else {
$('#atc<?php echo $rnd; ?>').val('');
}
}
// Validation
$("#form-<?php echo $rnd; ?>").validate(
{
// Rules for form validation
rules:
{
<?php echo $opt['frmelval']; ?> <?php if ( ! empty ( $opt['frmelval'] ) ) { // @since 1.0.8.1
echo ',';
}?>
<?php if ( $opt['iscaptcha'] == 'on' ) {
ecf_captcha_helper_rules( null, $opt['captchastyle'], null, null );
}
?>
},
// Messages for form validation
messages:
{
<?php if ( $opt['frmerrmsg'] != 'none' ) { echo $opt['frmelvalmsg']; } ?>
},
// Do not change code below
errorPlacement: function(error, element) {
<?php if ( $opt['fo_tooltip'] == 'tooltip' ) { wp_enqueue_script( 'ecf-tooltipster' ); wp_enqueue_style( 'ecf-tooltipster-css' ); if ( $opt['fo_tooltip_theme'] && $opt['fo_tooltip_theme'] != 'usedefault' ) { wp_enqueue_style( 'ecf-tooltipster-'.$opt['fo_tooltip_theme'].'' ); } else { wp_enqueue_style( 'ecf-tooltipster-shadow' ); } ?>
newError = $(error).text();
if(newError !== ''){
$(element).tooltipster('content', newError);
$(element).tooltipster('show');
}
},
<?php } else { ?>
error.insertAfter(element.parent());
},
<?php } ?>
submitHandler: function (form) {
<?php if ( $opt['iscaptcha'] == 'on' && $opt['captchastyle'] == 'v2' ) { if ( !is_admin() ) { wp_enqueue_script( 'jquery-effects-core' ); wp_enqueue_script( 'jquery-effects-shake' ); }; ?>
if ($('#g-recaptcha-response').val() != '') {
ecf_onsubmit(jQuery('.form-<?php echo $rnd; ?>'));
} else {
$('.g-recaptcha').parent().effect( "shake", {times:2,distance:5}, 400 );
var jElement = $('.g-recaptcha').prev();
jElement.addClass('ecfhighlight');
setTimeout(function() { jElement.removeClass('ecfhighlight') }, 4000 );
$.ladda( 'stopAll' );
return false;
} <?php } else { ?>
ecf_onsubmit(jQuery('.form-<?php echo $rnd; ?>'));
<?php } ?>
},
invalidHandler: function (form) {
$.ladda( 'stopAll' );
},
onkeyup: false,
onfocusout: false,
onclick: false
});
});
/* Form Submit ( Ajax ) */
function ecf_onsubmit(form){
var datafiles = new FormData();
if(form.attr('action')=='#'){
data = {};
eldat = [];
data['action'] = 'ecf_deliver_mail';
data['time'] = <?php echo $rnd; ?>time;
data['formid'] = '<?php echo $fid; ?>';
data['security'] = '<?php echo wp_create_nonce( trim($fid) ); ?>';
jQuery('input, textarea, select, radio, checkbox, file', form).each(function(key){
items = {};
if (typeof $(this).data('type') === 'undefined') { return true; }
if ($(this).data('type') == 'radio' && !$(this).is(':checked')) { return true; }
if ($(this).data('type') == 'rating' && !$(this).is(':checked')) { return true; } // Rating System @since 1.0.7.9
if ($(this).data('type') == 'checkboxes') { return true; }
if ($(this).data('type') == 'address') { return true; }
if ($(this).data('type') == 'daterange') { return true; }
if ($(this).data('type') == 'department') { items['deptemail'] = $(this).find(":selected").data('deptemail'); }
if ($(this).data('type') == 'attachment' && typeof files !== 'undefined' ) {
if ( files != null ) {
$.each(files, function(key, value) {
datafiles.append(key, value);
});
}
}
items['type'] = $(this).data('type');
items['label'] = $(this).data('label');
items['value'] = this.value;
items['name'] = this.name;
eldat.push(items);
}); // END form).each(function(key){
<?php if ( $frm ) { echo ecf_checkbox_helper( $fid, $opt['frmformat'] ); } else { echo ecf_checkbox_helper( $fid, null ); } ?>
data['allelmnt'] = JSON.stringify(eldat);
if ( files != null ) { // If need to Upload
datafiles.append( 'action', 'ecf_form_uploader' );
datafiles.append( 'thefile', JSON.stringify(datafiles) );
datafiles.append( 'formid', '<?php echo $fid; ?>' );
datafiles.append( 'security', '<?php echo wp_create_nonce( trim($fid) ); ?>' );
uploadForm(datafiles);
}
else { // No Need to Upload
data['attachments'] = null;
submitForm('');
}
return false;
} // End if(form.attr('action')=='#'){
} // End ecf_onsubmit
// Start submitForm
function submitForm(tdat) {
if ( tdat ) {
data['attachments'] = JSON.stringify(filedat);
}
jQuery.ajax({
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'POST',
dataType: 'json',
data: data,
success: function(data) {
if(data.Ok==true) {
// success
$("#form-<?php echo $rnd; ?>").get(0).reset();
if(data.msg == 'redirect') {
window.location = "<?php echo $opt['actafter'][2]; ?>";
} else {
notifyme('<?php if ( wp_is_mobile() ) { echo addslashes('Sent'); } else { echo addslashes( $opt['actafter'][1] ); } ?>', 'n', 'success', 'left middle');
<?php if ( $modal && empty( $tp ) ) { // Form Modal @since 1.8.0.3 ?>
window.setTimeout(function() {
$('#<?php echo $rnd; ?>-form-modal-overlay').trigger('click');
}, 2500);
<?php } ?>
}
}
else {
$("#form-<?php echo $rnd; ?>").get(0).reset();
notifyme(data.msg, 'n', 'error', 'left middle');
}
$.ladda( 'stopAll' );
}
});
<?php if ( $opt['iscaptcha'] == 'on' && $opt['captchastyle'] == 'v1' ) { ?>
Recaptcha.reload(); <?php } ?>
files = null;
filedat = null;
} // End submitForm
// Start Upload
function uploadForm(dat) {
$('.meter span').css('width','0%');
jQuery.ajax({
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
$('.meter').fadeIn(500);
var percentComplete = evt.loaded / evt.total;
percentComplete = parseInt(percentComplete * 100);
$('.meter span').css('width',+percentComplete+'%');
}
}, false);
return xhr;
},
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'POST',
data: dat,
cache: false,
dataType: 'json',
processData: false, // Don't process the files
contentType: false, // Set content type to false as jQuery will tell the server its a query string request
success: function(data, textStatus, jqXHR)
{
if(data.Ok==true) {
fileitms = {};
filedat = [];
$.each(data.msg, function(key, value) {
filedat.push(value);
});
submitForm(filedat);
}
else if (data.Ok==false) {
$("#form-<?php echo $rnd; ?>").get(0).reset();
notifyme(data.msg, 'a', 'error', 'top center');
$.ladda( 'stopAll' );
}
else {
if ( jqXHR.responseText == '0') {
$("#form-<?php echo $rnd; ?>").get(0).reset();
notifyme('File too large. File must be less than '+maxupsizeStr+'.', 'a', 'error', 'top center');
}
$.ladda( 'stopAll' );
}
$('.meter').fadeOut(500);
},
error: function(jqXHR, textStatus, errorThrown)
{
$('.meter').fadeOut(500);
$.ladda( 'stopAll' );
// Handle errors here
notifyme('There was an error uploading your files.', 'a', 'error', 'top center');
// STOP LOADING SPINNER
}
});
<?php if ( $opt['iscaptcha'] == 'on' && $opt['captchastyle'] == 'v1' ) { ?>
Recaptcha.reload(); <?php } ?>
files = null;
filedat = null;
} // End Upload
// Notify
function notifyme(msg, b, typ, pos) {
if (b == 'n') {
b = 'cf-submitted<?php echo $rnd; ?>';
} else {
b = 'atc<?php echo $rnd; ?>';
}
$("#"+b).gnotify(msg,{
style: "nbootstrap",
elementPosition: pos,
className: typ
});
msg = null;
typ = null;
}
<?php if ( $opt['fo_tooltip'] == 'tooltip' ) { ?>
jQuery('#form-<?php echo $rnd; ?> input, #form-<?php echo $rnd; ?> textarea, #form-<?php echo $rnd; ?> select, #form-<?php echo $rnd; ?> radio, #form-<?php echo $rnd; ?> checkbox, #form-<?php echo $rnd; ?> file').tooltipster({
trigger: 'custom',
theme: '<?php if ( $opt['fo_tooltip_theme'] && $opt['fo_tooltip_theme'] != 'usedefault' ) { echo 'tooltipster-'.$opt['fo_tooltip_theme']; } else { echo 'tooltipster-default'; } ?>',
animation: '<?php if ( $opt['fo_tooltip_anim'] ) { echo $opt['fo_tooltip_anim']; } else { echo 'fade'; } ?>',
autoClose: true,
onlyOne: false,
timer: 3000,
position: '<?php if ( $opt['fo_tooltip_pos'] ) { echo $opt['fo_tooltip_pos']; } else { echo 'right'; } ?>'
});
<?php } ?>
});
</script>
<!-- END JS for Form ID: <?php echo $fid; ?> -->
<!-- START Form Markup for Form ID: <?php echo $fid; ?> -->
<?php if( $opt['fo_head_img'] ) {
echo ecf_lazy_header_img( $rnd );
}
?>
<div id="preloader-<?php echo $rnd; ?>" class="ecfpreloader" style=" <?php echo $hidervs; ?>"></div>
<?php if ( empty ($modal ) ) { ?>
<div id="ecf-form-<?php echo $rnd; ?>" class="ecf-body" style=" <?php echo $nopddng; ?>">
<?php } ?>
<form style=" <?php echo $hide; ?>" method="post" enctype="multipart/form-data" action="#" id="form-<?php echo $rnd; ?>" class="ecf-form form-<?php echo $rnd; ?>">
<?php echo $isheader; ?>
<fieldset>
<?php
foreach( $frmArray as $key => $value ) {
foreach( $value as $k => $v ) {
// Phone Number @since 1.0.7.11
if ( isset( $v['phonemask'] ) && trim ( $v['phonemask'] ) !='' ) {
if ( $v['phonemask'] == trim('Default - (xxx) xxx-xxx-xxx') ) {
$isphonemask = '(xxx) xxx-xxx-xxx';
$isphoneplchldr = 'placeholder="'.$isphonemask.'"';
} else {
$isphonemask = $v['phonemask'];
$isphoneplchldr = 'placeholder="'.$isphonemask.'"';
}
} else {
$isphonemask = '(xxx) xxx-xxx-xxx';
$isphoneplchldr = 'placeholder="'.$isphonemask.'"';
}
//----- end phone
if ( isset( $v['placeholder'] ) && trim ( $v['placeholder'] ) !='' ) {
$isplchldr = 'placeholder="'.$v['placeholder'].'"';
} else {
$isplchldr = null;
}
if ( $v['field_type'] == 'paragraph' || $v['field_type'] == 'message' ) {
$lblclass = 'textarea';
}
else if ( $v['field_type'] == 'dropdown' || $v['field_type'] == 'department' ) {
$lblclass = 'select';
}
else if ( $v['field_type'] == 'checkboxes' ) {
$lblclass = 'checkbox';
}
else if ( $v['field_type'] == 'radio' ) {
$lblclass = 'radio';
}
else if ( $v['field_type'] == 'attachment' ) {
$lblclass = 'input input-file';
}
else {
$lblclass = 'input';
}
// Address @since 1.0.7.13
if ( $v['field_type'] != 'address' || $v['field_type'] != 'daterange' ) {
echo '<section>';
}
// Rating System @since 1.0.7.9
if ( $v['field_type'] == 'rating' ) {
echo'<div class="rating">';
echo $v['label'];
}
elseif ( $v['field_type'] == 'slider' ) {
}
else {
echo '<label class="label">'.$v['label'].'</label>';
}
if ( $v['field_type'] != 'address' || $v['field_type'] != 'daterange' || $v['field_type'] != 'slider' ) {
echo '<label class="'.$lblclass.'">';
}
if ( $v['field_type'] != 'rating' ) { // Rating System @since 1.0.7.9
if ( isset( $v['iconpos'] ) && trim ( $v['iconpos'] ) != '' ) {
$v['iconpos'] = $v['iconpos'];
} else {
$v['iconpos'] = 'prepend';
}
} else {
$v['iconpos'] = '';
}
if ( $v['field_type'] == 'rating' ) { // Rating System @since 1.0.7.9
if ( trim ( isset( $v['iconcstm'] ) && $v['iconcstm'] ) == '' ) {
if ( isset( $v['icons'] ) && trim ( $v['icons'] ) !='' && trim ( $v['icons'] ) != 'none' ) {
$ratingicn = 'fa '.$v['icons'].'';
}
} else {
$ratingicn = 'fa '.$v['iconcstm'].'';
}
} else {
if ( trim ( isset( $v['iconcstm'] ) && $v['iconcstm'] ) == '' ) {
if ( isset( $v['icons'] ) && trim ( $v['icons'] ) !='' && trim ( $v['icons'] ) != 'none' ) {
echo '<i class="icon-'.$v['iconpos'].' fa '.$v['icons'].'"></i>';
$icndtrange = '<i class="icon-'.$v['iconpos'].' fa '.$v['icons'].'"></i>';
}
} else {
echo '<i class="icon-'.$v['iconpos'].' fa '.$v['iconcstm'].'"></i>';
$icndtrange = '<i class="icon-'.$v['iconpos'].' fa '.$v['iconcstm'].'"></i>';
}
}
// Start Generate Form Element
switch( $v['field_type'] ){
// Slider @since 1.0.7.15
case 'slider':
wp_enqueue_script('jquery-ui-slider');
echo '<label class="label">'.$v['label'].' (<span id="'.$v['field_type'].$k.'sliderlabel">'.$v['slidemin'].'</span> '.$v['slidetype'].')</label>';
echo '<div id="'.$v['field_type'].$k.'slider" name="'.$v['field_type'].$k.'slider"></div>';
echo '<input style="display: none !important;" data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" />';
?>
<script type="text/javascript">
jQuery(function()
{
// Step slider
jQuery('#<?php echo $v['field_type'].$k.'slider'; ?>').slider({
range: 'min',
min: <?php if ( $v['slidemin'] ) { echo $v['slidemin']; } else { echo '0'; } ?>,
max: <?php if ( $v['slidemax'] ) { echo $v['slidemax']; } else { echo '100'; } ?>,
<?php if ( $v['slidestep'] ) { echo 'step: '.$v['slidestep'].','."
"; }?>
slide: function(event, ui)
{
jQuery('#<?php echo $v['field_type'].$k.'sliderlabel'; ?>').text(ui.value);
jQuery('#<?php echo $v['field_type'].$k; ?>').val(ui.value+ ' <?php echo $v['slidetype']; ?>');
}
});
});
</script>
<?php
break;
// Address @since 1.0.7.13
case 'address':
echo '<div class="ecf-row">';
echo '<section class="ecf-col ecf-col-5">';
echo '<label class="select">';
echo '<select data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" name="'.$v['field_type'].$k.'01" id="'.$v['field_type'].$k.'01">
<option value="0" selected disabled>'.$v['country'].'</option>
<option value="Aaland Islands">Aaland Islands</option>
<option value="Afghanistan">Afghanistan</option>
<option value="Albania">Albania</option>
<option value="Algeria">Algeria</option>
<option value="American Samoa">American Samoa</option>
<option value="Andorra">Andorra</option>
<option value="Angola">Angola</option>
<option value="Anguilla">Anguilla</option>
<option value="Antarctica">Antarctica</option>
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
<option value="Argentina">Argentina</option>
<option value="Armenia">Armenia</option>
<option value="Aruba">Aruba</option>
<option value="Australia">Australia</option>
<option value="Austria">Austria</option>
<option value="Azerbaijan">Azerbaijan</option>
<option value="Bahamas">Bahamas</option>
<option value="Bahrain">Bahrain</option>
<option value="Bangladesh">Bangladesh</option>
<option value="Barbados">Barbados</option>
<option value="Belarus">Belarus</option>
<option value="Belgium">Belgium</option>
<option value="Belize">Belize</option>
<option value="Benin">Benin</option>
<option value="Bermuda">Bermuda</option>
<option value="Bhutan">Bhutan</option>
<option value="Bolivia">Bolivia</option>
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
<option value="Botswana">Botswana</option>
<option value="Bouvet Island">Bouvet Island</option>
<option value="Brazil">Brazil</option>
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
<option value="Brunei Darussalam">Brunei Darussalam</option>
<option value="Bulgaria">Bulgaria</option>
<option value="Burkina Faso">Burkina Faso</option>
<option value="Burundi">Burundi</option>
<option value="Cambodia">Cambodia</option>
<option value="Cameroon">Cameroon</option>
<option value="Canada">Canada</option>
<option value="Canary Islands">Canary Islands</option>
<option value="Cape Verde">Cape Verde</option>
<option value="Cayman Islands">Cayman Islands</option>
<option value="Central African Republic">Central African Republic</option>
<option value="Chad">Chad</option>
<option value="Chile">Chile</option>
<option value="China">China</option>
<option value="Christmas Island">Christmas Island</option>
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
<option value="Colombia">Colombia</option>
<option value="Comoros">Comoros</option>
<option value="Congo">Congo</option>
<option value="Cook Islands">Cook Islands</option>
<option value="Costa Rica">Costa Rica</option>
<option value="Cote D Ivoire">Cote D Ivoire</option>
<option value="Croatia">Croatia</option>
<option value="Cuba">Cuba</option>
<option value="Curacao">Curacao</option>
<option value="Cyprus">Cyprus</option>
<option value="Czech Republic">Czech Republic</option>
<option value="Democratic Republic of Congo">Democratic Republic of Congo</option>
<option value="Denmark">Denmark</option>
<option value="Djibouti">Djibouti</option>
<option value="Dominica">Dominica</option>
<option value="Dominican Republic">Dominican Republic</option>
<option value="East Timor">East Timor</option>
<option value="Ecuador">Ecuador</option>
<option value="Egypt">Egypt</option>
<option value="El Salvador">El Salvador</option>
<option value="Equatorial Guinea">Equatorial Guinea</option>
<option value="Eritrea">Eritrea</option>
<option value="Estonia">Estonia</option>
<option value="Ethiopia">Ethiopia</option>
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
<option value="Faroe Islands">Faroe Islands</option>
<option value="Fiji">Fiji</option>
<option value="Finland">Finland</option>
<option value="France, skypolitan">France, skypolitan</option>
<option value="French Guiana">French Guiana</option>
<option value="French Polynesia">French Polynesia</option>
<option value="French Southern Territories">French Southern Territories</option>
<option value="FYROM">FYROM</option>
<option value="Gabon">Gabon</option>
<option value="Gambia">Gambia</option>
<option value="Georgia">Georgia</option>
<option value="Germany">Germany</option>
<option value="Ghana">Ghana</option>
<option value="Gibraltar">Gibraltar</option>
<option value="Greece">Greece</option>
<option value="Greenland">Greenland</option>
<option value="Grenada">Grenada</option>
<option value="Guadeloupe">Guadeloupe</option>
<option value="Guam">Guam</option>
<option value="Guatemala">Guatemala</option>
<option value="Guernsey">Guernsey</option>
<option value="Guinea">Guinea</option>
<option value="Guinea-Bissau">Guinea-Bissau</option>
<option value="Guyana">Guyana</option>
<option value="Haiti">Haiti</option>
<option value="Heard and Mc Donald Islands">Heard and Mc Donald Islands</option>
<option value="Honduras">Honduras</option>
<option value="Hong Kong">Hong Kong</option>
<option value="Hungary">Hungary</option>
<option value="Iceland">Iceland</option>
<option value="India">India</option>
<option value="Indonesia">Indonesia</option>
<option value="Iran (Islamic Republic of)">Iran (Islamic Republic of)</option>
<option value="Iraq">Iraq</option>
<option value="Ireland">Ireland</option>
<option value="Israel">Israel</option>
<option value="Italy">Italy</option>
<option value="Jamaica">Jamaica</option>
<option value="Japan">Japan</option>
<option value="Jersey">Jersey</option>
<option value="Jordan">Jordan</option>
<option value="Kazakhstan">Kazakhstan</option>
<option value="Kenya">Kenya</option>
<option value="Kiribati">Kiribati</option>
<option value="Korea, Republic of">Korea, Republic of</option>
<option value="Kuwait">Kuwait</option>
<option value="Kyrgyzstan">Kyrgyzstan</option>
<option value="Lao People Democratic Republic">Lao People Democratic Republic</option>
<option value="Latvia">Latvia</option>
<option value="Lebanon">Lebanon</option>
<option value="Lesotho">Lesotho</option>
<option value="Liberia">Liberia</option>
<option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option>
<option value="Liechtenstein">Liechtenstein</option>
<option value="Lithuania">Lithuania</option>
<option value="Luxembourg">Luxembourg</option>
<option value="Macau">Macau</option>
<option value="Madagascar">Madagascar</option>
<option value="Malawi">Malawi</option>
<option value="Malaysia">Malaysia</option>
<option value="Maldives">Maldives</option>
<option value="Mali">Mali</option>
<option value="Malta">Malta</option>
<option value="Marshall Islands">Marshall Islands</option>
<option value="Martinique">Martinique</option>
<option value="Mauritania">Mauritania</option>
<option value="Mauritius">Mauritius</option>
<option value="Mayotte">Mayotte</option>
<option value="Mexico">Mexico</option>
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
<option value="Moldova, Republic of">Moldova, Republic of</option>
<option value="Monaco">Monaco</option>
<option value="Mongolia">Mongolia</option>
<option value="Montenegro">Montenegro</option>
<option value="Montserrat">Montserrat</option>
<option value="Morocco">Morocco</option>
<option value="Mozambique">Mozambique</option>
<option value="Myanmar">Myanmar</option>
<option value="Namibia">Namibia</option>
<option value="Nauru">Nauru</option>
<option value="Nepal">Nepal</option>
<option value="Netherlands">Netherlands</option>
<option value="Netherlands Antilles">Netherlands Antilles</option>
<option value="New Caledonia">New Caledonia</option>
<option value="New Zealand">New Zealand</option>
<option value="Nicaragua">Nicaragua</option>
<option value="Niger">Niger</option>
<option value="Nigeria">Nigeria</option>
<option value="Niue">Niue</option>
<option value="Norfolk Island">Norfolk Island</option>
<option value="North Korea">North Korea</option>
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
<option value="Norway">Norway</option>
<option value="Oman">Oman</option>
<option value="Pakistan">Pakistan</option>
<option value="Palau">Palau</option>
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
<option value="Panama">Panama</option>
<option value="Papua New Guinea">Papua New Guinea</option>
<option value="Paraguay">Paraguay</option>
<option value="Peru">Peru</option>
<option value="Philippines">Philippines</option>
<option value="Pitcairn">Pitcairn</option>
<option value="Poland">Poland</option>
<option value="Portugal">Portugal</option>
<option value="Puerto Rico">Puerto Rico</option>
<option value="Qatar">Qatar</option>
<option value="Reunion">Reunion</option>
<option value="Romania">Romania</option>
<option value="Russian Federation">Russian Federation</option>
<option value="Rwanda">Rwanda</option>
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
<option value="Saint Lucia">Saint Lucia</option>
<option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option>
<option value="Samoa">Samoa</option>
<option value="San Marino">San Marino</option>
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
<option value="Saudi Arabia">Saudi Arabia</option>
<option value="Senegal">Senegal</option>
<option value="Serbia">Serbia</option>
<option value="Seychelles">Seychelles</option>
<option value="Sierra Leone">Sierra Leone</option>
<option value="Singapore">Singapore</option>
<option value="Slovak Republic">Slovak Republic</option>
<option value="Slovenia">Slovenia</option>
<option value="Solomon Islands">Solomon Islands</option>
<option value="Somalia">Somalia</option>
<option value="South Africa">South Africa</option>
<option value="South Georgia & South Sandwich Islands">South Georgia & South Sandwich Islands</option>
<option value="South Sudan">South Sudan</option>
<option value="Spain">Spain</option>
<option value="Sri Lanka">Sri Lanka</option>
<option value="St. Barthelemy">St. Barthelemy</option>
<option value="St. Helena">St. Helena</option>
<option value="St. Martin (French part)">St. Martin (French part)</option>
<option value="St. Pierre and Miquelon">St. Pierre and Miquelon</option>
<option value="Sudan">Sudan</option>
<option value="Suriname">Suriname</option>
<option value="Svalbard and Jan Mayen Islands">Svalbard and Jan Mayen Islands</option>
<option value="Swaziland">Swaziland</option>
<option value="Sweden">Sweden</option>
<option value="Switzerland">Switzerland</option>
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
<option value="Taiwan">Taiwan</option>
<option value="Tajikistan">Tajikistan</option>
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
<option value="Thailand">Thailand</option>
<option value="Togo">Togo</option>
<option value="Tokelau">Tokelau</option>
<option value="Tonga">Tonga</option>
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
<option value="Tunisia">Tunisia</option>
<option value="Turkey">Turkey</option>
<option value="Turkmenistan">Turkmenistan</option>
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
<option value="Tuvalu">Tuvalu</option>
<option value="Uganda">Uganda</option>
<option value="Ukraine">Ukraine</option>
<option value="United Arab Emirates">United Arab Emirates</option>
<option value="United Kingdom">United Kingdom</option>
<option value="United States">United States</option>
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
<option value="Uruguay">Uruguay</option>
<option value="Uzbekistan">Uzbekistan</option>
<option value="Vanuatu">Vanuatu</option>
<option value="Vatican City State (Holy See)">Vatican City State (Holy See)</option>
<option value="Venezuela">Venezuela</option>
<option value="Viet Nam">Viet Nam</option>
<option value="Virgin Islands (British)">Virgin Islands (British)</option>
<option value="Virgin Islands (U.S.)">Virgin Islands (U.S.)</option>
<option value="Wallis and Futuna Islands">Wallis and Futuna Islands</option>
<option value="Western Sahara">Western Sahara</option>
<option value="Yemen">Yemen</option>
<option value="Zambia">Zambia</option>
<option value="Zimbabwe">Zimbabwe</option>
<select>';
echo '<i></i>';
echo '</label>';
echo '</section>';
echo '<section class="ecf-col ecf-col-4">';
echo '<label class="input">';
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'02" type="text" name="'.$v['field_type'].$k.'02" placeholder="'.$v['city'].'" />';
echo '<i></i>';
echo '</label>';
echo '</section>';
echo '<section class="ecf-col ecf-col-3">';
echo '<label class="input">';
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'03" type="text" name="'.$v['field_type'].$k.'03" placeholder="'.$v['postcode'].'" />';
echo '<i></i>';
echo '</label>';
echo '</section>';
echo '</div>';
echo '<section>';
echo '<label class="input">';
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'04" type="text" name="'.$v['field_type'].$k.'04" placeholder="'.$v['address1'].'" />';
echo '<i></i>';
echo '</label>';
echo '</section>';
echo '<section>';
echo '<label class="input">';
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'05" type="text" name="'.$v['field_type'].$k.'05" placeholder="'.$v['address2'].'" />';
echo '<i></i>';
echo '</label>';
echo '</section>';
echo '<textarea style="display: none !important;" data-type="fulladdress" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'hidden" name="'.$v['field_type'].$k.'hidden" rows="7"></textarea>';
?>
<script type="text/javascript">
jQuery(function()
{
function fulladdressfor<?php echo $v['field_type'].$k ; ?>(){
var input<?php echo $v['field_type'].$k.'01'; ?> = '<?php echo $v['country']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'01'; ?> option:selected" ).text()+'
';
var input<?php echo $v['field_type'].$k.'02'; ?> = '<?php echo $v['city']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'02'; ?>").val()+'
';
var input<?php echo $v['field_type'].$k.'03'; ?> = '<?php echo $v['postcode']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'03'; ?>").val()+'
';
var input<?php echo $v['field_type'].$k.'04'; ?> = '<?php echo $v['address1']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'04'; ?>").val()+'
';
var input<?php echo $v['field_type'].$k.'05'; ?> = '<?php echo $v['address2']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'05'; ?>").val()+'
';
jQuery("#<?php echo $v['field_type'].$k.'hidden'; ?>").val(input<?php echo $v['field_type'].$k.'01'; ?>+input<?php echo $v['field_type'].$k.'02'; ?>+input<?php echo $v['field_type'].$k.'03'; ?>+input<?php echo $v['field_type'].$k.'04'; ?>+input<?php echo $v['field_type'].$k.'05'; ?>);
}
jQuery('#<?php echo $v['field_type'].$k.'01'; ?>, #<?php echo $v['field_type'].$k.'02'; ?>, #<?php echo $v['field_type'].$k.'03'; ?>, #<?php echo $v['field_type'].$k.'04'; ?>, #<?php echo $v['field_type'].$k.'05'; ?>').change(function(){
fulladdressfor<?php echo $v['field_type'].$k ; ?>();
});
});
</script>
<?php
break;
// Date Range @since 1.0.7.15
case 'daterange':
wp_enqueue_script('jquery-ui-datepicker');
echo '<div class="ecf-row">';
echo '<section class="ecf-col ecf-col-6">';
echo '<label class="input">';
echo $icndtrange;
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'start" type="text" name="'.$v['field_type'].$k.'start" placeholder="'.$v['datestart'].'" />';
echo '</label>';
echo '</section>';
echo '<section class="ecf-col ecf-col-6">';
echo '<label class="input">';
echo $icndtrange;
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'finish" type="text" name="'.$v['field_type'].$k.'finish" placeholder="'.$v['datefinish'].'" />';
echo '</label>';
echo '</section>';
echo '</div>';
echo '<textarea style="display: none !important;" data-type="fulldate" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'fulldate" name="'.$v['field_type'].$k.'fulldate" rows="7"></textarea>';
?>
<script type="text/javascript">
jQuery(function()
{
// Date range
jQuery('#ecf-form-<?php echo $rnd; ?> #<?php echo $v['field_type'].$k ;?>start').datepicker({
dateFormat: '<?php echo $v['dateformat'] ;?>',
prevText: '<i class="fa fa-chevron-left"></i>',
nextText: '<i class="fa fa-chevron-right"></i>',
onSelect: function( selectedDate )
{
fulldate<?php echo $v['field_type'].$k ; ?>();
jQuery('#ecf-form-<?php echo $rnd; ?> #<?php echo $v['field_type'].$k ;?>start').datepicker('option', 'minDate', selectedDate);
}
});
jQuery('#ecf-form-<?php echo $rnd; ?> #<?php echo $v['field_type'].$k ;?>finish').datepicker({
dateFormat: '<?php echo $v['dateformat'] ;?>',
prevText: '<i class="fa fa-chevron-left"></i>',
nextText: '<i class="fa fa-chevron-right"></i>',
onSelect: function( selectedDate )
{
fulldate<?php echo $v['field_type'].$k ; ?>();
jQuery('#ecf-form-<?php echo $rnd; ?> #<?php echo $v['field_type'].$k ;?>finish').datepicker('option', 'maxDate', selectedDate);
}
});
function fulldate<?php echo $v['field_type'].$k ; ?>(){
var input<?php echo $v['field_type'].$k.'start'; ?> = '<?php echo $v['datestart']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'start'; ?>").val()+'
';
var input<?php echo $v['field_type'].$k.'finish'; ?> = '<?php echo $v['datefinish']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'finish'; ?>").val()+'
';
jQuery("#<?php echo $v['field_type'].$k.'fulldate'; ?>").val(input<?php echo $v['field_type'].$k.'start'; ?>+input<?php echo $v['field_type'].$k.'finish'; ?>);
}
});
</script>
<?php
break;
// Phone Number @since 1.0.7.11
case 'phone':
wp_enqueue_script('ecf-maskedinput');
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" '.$isphoneplchldr.'/>';
if ( $isphonemask ) {
?>
<script type="text/javascript">
jQuery(function()
{
jQuery("#<?php echo $v['field_type'].$k ; ?>").mask('<?php echo $isphonemask; ?>', {placeholder:'x'});
});
</script>
<?php
}
break;
// Rating System @since 1.0.7.9
case 'rating':
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$k.'" value="5 Star" id="'.$v['field_type'].$k.'-rating-5">
<label for="'.$v['field_type'].$k.'-rating-5"><i class="'.$ratingicn.'"></i></label>
<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$k.'" value="4 Star" id="'.$v['field_type'].$k.'-rating-4">
<label for="'.$v['field_type'].$k.'-rating-4"><i class="'.$ratingicn.'"></i></label>
<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$k.'" value="3 Star" id="'.$v['field_type'].$k.'-rating-3">
<label for="'.$v['field_type'].$k.'-rating-3"><i class="'.$ratingicn.'"></i></label>
<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$k.'" value="2 Star" id="'.$v['field_type'].$k.'-rating-2">
<label for="'.$v['field_type'].$k.'-rating-2"><i class="'.$ratingicn.'"></i></label>
<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$k.'" value="1 Star" id="'.$v['field_type'].$k.'-rating-1">
<label for="'.$v['field_type'].$k.'-rating-1"><i class="'.$ratingicn.'"></i></label>
</div>';
break;
case 'name':
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" '.$isplchldr.'/>';
break;
case 'text':
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" '.$isplchldr.'/>';
break;
case 'password': //@since 1.0.8.1
wp_enqueue_script('ecf-maskedpassword');
echo '<input id="'.$v['field_type'].$k.'-fake" type="text" '.$isplchldr.'/>';
echo '<input style="display: none !important;" data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'"/>';
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
if ( $('#<?php echo $v['field_type'].$k; ?>-fake').prev().hasClass('icon-prepend') ) {
$('#<?php echo $v['field_type'].$k; ?>-fake').css('padding-left',45);
}
else {
$('#<?php echo $v['field_type'].$k; ?>-fake').css('padding-left',10);
}
new MaskedPassword(document.getElementById('<?php echo $v['field_type'].$k; ?>-fake'), '');
$('#<?php echo $v['field_type'].$k; ?>-fake').keyup(function() {
$('#<?php echo $v['field_type'].$k; ?>').val($(this).prev().val());
});
});
</script>
<?php
break;
case 'date':
wp_enqueue_script('jquery-ui-datepicker');
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" '.$isplchldr.'/>';
?>
<script type="text/javascript">
jQuery(function()
{
jQuery('#ecf-form-<?php echo $rnd; ?> #<?php echo $v['field_type'].$k ;?>').datepicker({
dateFormat: '<?php echo $v['dateformat'] ;?>',
prevText: '<i class="fa fa-chevron-left"></i>',
nextText: '<i class="fa fa-chevron-right"></i>'
});
});
</script>
<?php
break;
case 'email':
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" '.$isplchldr.'/>';
break;
case 'website':
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" placeholder="http://"/>';
break;
case 'paragraph':
echo '<textarea data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" name="'.$v['field_type'].$k.'" rows="7" '.$isplchldr.'></textarea>';
break;
case 'message':
echo '<textarea data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" name="'.$v['field_type'].$k.'" rows="7" '.$isplchldr.'></textarea>';
break;
case 'attachment':
echo '<div class="ecfbutton attach'.$fid.'"><input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="file" id="'.$v['field_type'].$k.'" name="'.$v['field_type'].$k.'" '.( $opt['multiattach'] == 'on' ? 'multiple': '' ).'>Browse</div><input id="atc'.$rnd.'" type="text" readonly><div class="meter">
<span style="width: 0%"></span>
</div>';
break;
case 'radio':
echo'<div class="inline-group">';
foreach( $v['field_options'] as $keys => $values ) {
if ( $values ) {
foreach( $values as $ks => $vs ) {
if ( $vs['checked'] == 'true' ) {
$isdefault = 'checked="checked"';
} else {
$isdefault = null;
}
echo '<label class="radio"><input value="'.$vs['label'].'" data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$v['cid'].'" '.$isdefault.'><i></i>'.$vs['label'].'</label>';
}
}
}
echo '</div>';
break;
case 'checkboxes':
echo'<div class="inline-group">';
foreach( $v['field_options'] as $keys => $values ) {
if ( $values ) {
foreach( $values as $ks => $vs ) {
if ( $vs['checked'] == 'true' ) {
$isdefault = 'checked="checked"';
} else {
$isdefault = null;
}
echo '<label class="checkbox"><input value="'.$vs['label'].'" data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="checkbox" name="'.$v['field_type'].$v['cid'].'" '.$isdefault.'><i></i>'.$vs['label'].'</label>';
}
}
}
echo '</div>';
break;
case 'dropdown':
echo '<select data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" name="'.$v['field_type'].$k.'">';
echo '<option value="">--- select ---</option>';
foreach( $v['field_options'] as $keys => $values ) {
if ( $values ) {
foreach( $values as $ks => $vs ) {
if ( $vs['checked'] == 'true' ) {
$isdefault = 'selected';
} else {
$isdefault = null;
}
echo '<option value="'.$vs['label'].'" '.$isdefault.'>'.$vs['label'].'</option>';
}
}
}
echo '</select>';
echo '<i></i>';
break;
case 'department':
echo '<select data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" name="'.$v['field_type'].$k.'">';
echo '<option value="">--- select ---</option>';
foreach( $v['field_options'] as $keys => $values ) {
if ( $values ) {
foreach( $values as $ks => $vs ) {
if ( $vs['checked'] == 'true' ) {
$isdefault = 'selected';
} else {
$isdefault = null;
}
echo '<option data-deptemail="'.$vs['emailaddress'].'" value="'.$vs['label'].'" '.$isdefault.'>'.$vs['label'].'</option>';
}
}
}
echo '</select>';
echo '<i></i>';
break;
default: // End Foreach
break;
}
if ( $v['field_type'] != 'address' || $v['field_type'] != 'daterange' || $v['field_type'] != 'slider' ) {
echo '</label>';
}
if ( isset( $v['attachnote'] ) && trim ( $v['attachnote'] ) == '1' && $v['field_type'] == 'attachment' ) {
echo '<div class="ecfnote"><strong>NOTE :</strong> ' .trim ( $v['field_options']['description'] ).'</div>';
}
if ( $v['field_type'] != 'address' || $v['field_type'] != 'daterange' ) {
echo '</section>';
}
}
}
if ( $opt['iscaptcha'] == 'on' ) {
?>
<section>
<label class="label"><?php if ( $opt['captchalbl'] != 'none' ) { echo $opt['captchalbl']; } ?></label>
<?php ecf_captcha_helper_footer( null, $opt['captchastyle'], $opt['captchapub'], $opt['captchathm'] ); ?>
</section>
<?php } ?>
</fieldset>
<footer>
<button data-style="<?php echo $opt['fo_field_btn_anm']; ?>" id="cf-submitted<?php echo $rnd; ?>" class="ecfbutton ladda-button" type="submit" name="cf-submitted<?php echo $rnd; ?>"><span class="ladda-label"><?php echo $opt['fo_field_btn_txt']; ?></span></button>
</footer>
</form>
<?php if ( ecf_get_aff_option( 'ecf_affiliate_info', 'ecf_aff_id', '' ) ) {
if ( $iswidget ) { $ispwrd = 'By '; } else { $ispwrd = 'Powered by '; }
?>
<span class="ecf-aff-link"><?php echo $ispwrd; ?><a href="https://secure.ghozylab.com/demo/?ref=<?php echo ecf_get_aff_option( 'ecf_affiliate_info', 'ecf_aff_id', '' ); ?>&goto=ecf" target="_blank">Easy Contact Form Plugin</a></span>
<?php } // @since 1.0.7.19 ?>
<?php if ( $modal && empty( $tp ) ) { ?>
<div id="<?php echo $rnd; ?>-form-modal-overlay" class="form-modal-overlay"> <?php } ?>
</div>
<!-- END Form Markup for Form ID: <?php echo $fid; ?> -->
<!-- START Custom CSS for Form ID: <?php echo $fid; ?> -->
<style>
<?php $fm = '#form-'.$rnd.' '; $csscode = str_replace( '{formid}', $fm, $opt['fo_custom_css'] ); echo $csscode; ?>
</style>
<!-- END Custom CSS for Form ID: <?php echo $fid; ?> -->
<!-- START Custom JS for Form ID: <?php echo $fid; ?> -->
<script type="text/javascript">
/*<![CDATA[*/
<?php echo $opt['fo_custom_js']; ?>
/*]]>*/</script>
<!-- END Custom JS for Form ID: <?php echo $fid; ?> -->
<?php
$theform = ob_get_clean();
if ( empty( $opt['frmelval'] ) ) { // @since 1.0.8.1
echo ecf_notify('formelement', $fid);
} else {
echo $theform;
}
} // End ecf_markup_generator -----------------------------------------------*/
/*-------------------------------------------------------------------------------*/
/* Frontend Dynamic CSS
/*-------------------------------------------------------------------------------*/
function ecf_form_style_generator( $rndm, $opt, $iswdgt = null, $modal = null ) {
$fo = '#ecf-form-'.$rndm.' ';
// Form Pattern/Footer @since 1.0.7.9
if ( $opt['fo_footer_col'] == '' ) {
$opt['fo_footer_col'] = '#F8F8F8';
} else {
$opt['fo_footer_col'] = $opt['fo_footer_col'];
}
if ( $opt['fo_pattern'] == 'no_pattern' || $opt['fo_pattern'] == '' ) {
echo $fo.'#form-'.$rndm.' fieldset {background: none;}'."
";
} else {
echo $fo.'#form-'.$rndm.' fieldset {background: url('.ECF_URL.'/css/images/patterns/'.$opt['fo_pattern'].') !important; background-repeat: repeat;}'."
";
}
if ( $opt['fo_padding'] == '' ) {
echo $fo.'{padding: 40px;}'."
"; // @since 1.0.7.15
} else {
echo $fo.'{padding: '.$opt['fo_padding'].'px;}'."
"; // @since 1.0.7.15
}
echo $fo.'.ecf-form {color: '.$opt['fo_txt_col'].' !important;}'."
";
echo $fo.'{max-width: '.$opt['fo_width'].'px;}'."
";
echo $fo.'#form-'.$rndm.' {background: none repeat scroll 0% 0% rgba('.ecf_hex2rgb( $opt['fo_bg_col'] ).', 1); border: solid '.$opt['fo_brdr'].'px '.$opt['fo_brdr_col'].';}'."
";
if ( $opt['fo_is_shw'] == 'on' ) { echo $fo.'#form-'.$rndm.' {box-shadow: 0px 0px 10px rgba('.ecf_hex2rgb( $opt['fo_sdw_col'] ).', 0.3) !important;}'."
"; } else { echo $fo.'#form-'.$rndm.' {box-shadow: none;}'."
"; }
if ( is_array( $opt['fo_typo_header'] ) && $opt['fo_typo_header']['font'] !='Open Sans' ) {
ecf_frontend_custom_typo_fonts( 'fo_typo_header', $rndm, htmlspecialchars( $opt['fo_typo_header']['font'] ) );
add_action('wp_print_styles', 'ecf_frontend_custom_typo_fonts', 15);
echo $fo.'#form-'.$rndm.' header {background: none repeat scroll 0% 0% rgba('.ecf_hex2rgb( $opt['fo_head_col'] ).', 1); font-size: '.$opt['fo_typo_header']['size'].' !important; font-weight: '.$opt['fo_typo_header']['weight'].' !important; color: '.$opt['fo_typo_header']['color'].'; font-family: '.htmlspecialchars( $opt['fo_typo_header']['font'] ).';}'."
";
}
if ( is_array( $opt['fo_typo_label'] ) && $opt['fo_typo_label']['font'] !='Open Sans' ) {
ecf_frontend_custom_typo_fonts( 'fo_typo_label', $rndm, htmlspecialchars( $opt['fo_typo_label']['font'] ) );
add_action('wp_print_styles', 'ecf_frontend_custom_typo_fonts', 15);
echo $fo.'.ecf-form .label {font-size: '.$opt['fo_typo_label']['size'].' !important; font-weight: '.$opt['fo_typo_label']['weight'].' !important; color: '.$opt['fo_typo_label']['color'].'; font-family: '.htmlspecialchars( $opt['fo_typo_label']['font'] ).';}'."
";
}
if ( is_array( $opt['fo_typo_button'] ) && $opt['fo_typo_button']['font'] !='Open Sans' ) {
ecf_frontend_custom_typo_fonts( 'fo_typo_button', $rndm, htmlspecialchars( $opt['fo_typo_button']['font'] ) );
add_action('wp_print_styles', 'ecf_frontend_custom_typo_fonts', 15);
echo $fo.'.ecf-form .ecfbutton, '.$fo.'.ecf-form .input-file .ecfbutton {font-size: '.$opt['fo_typo_button']['size'].' !important; font-weight: '.$opt['fo_typo_button']['weight'].' !important; color: '.$opt['fo_typo_button']['color'].'; font-family: '.htmlspecialchars( $opt['fo_typo_button']['font'] ).' !important;}'."
";
}
echo $fo.'#form-'.$rndm.' footer {background: none repeat scroll 0% 0% rgba('.ecf_hex2rgb( $opt['fo_footer_col'] ).', 1);}'."
";
echo $fo.'.ecf-form .input input,';
echo $fo.'.ecf-form .select select,';
echo $fo.'.ecf-form .textarea textarea {background: '.$opt['fo_field_bk_col'].';}'."
";
echo $fo.'.ecf-form .toggle i:before {background-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .button {background-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .input:hover input,'."
";
echo $fo.'.ecf-form .select:hover select,'."
";
echo $fo.'.ecf-form .textarea:hover textarea,'."
";
echo $fo.'.ecf-form .radio:hover i,'."
";
echo $fo.'.ecf-form .checkbox:hover i,'."
";
echo $fo.'.ecf-form .toggle:hover i,'."
";
echo $fo.'.ecf-form .ui-slider-handle:hover {border-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .ui-slider-handle:hover {border-color: '.$opt['fo_field_bor_col'].';}'."
";
//echo $fo.'.ecf-form .ui-slider-range {background: transparent -moz-linear-gradient(center top , #FFF 0%, '.$opt['fo_field_bor_col'].' 100%) repeat scroll 0% 0%;}'."
";
echo $fo.'.ecf-form .rating input + label:hover,'."
";
echo $fo.'.ecf-form .rating input + label:hover ~ label {color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .input input:focus,'."
";
echo $fo.'.ecf-form .select select:focus,'."
";
echo $fo.'.ecf-form .textarea textarea:focus,'."
";
echo $fo.'.ecf-form .radio input:focus + i,'."
";
echo $fo.'.ecf-form .checkbox input:focus + i,'."
";
echo $fo.'.ecf-form .toggle input:focus + i {border-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .radio input + i:after {background-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .checkbox input + i:after {color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .radio input:checked + i,'."
";
echo $fo.'.ecf-form .checkbox input:checked + i,'."
";
echo $fo.'.ecf-form .toggle input:checked + i {border-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .rating input:checked ~ label {color: '.$opt['fo_field_bor_col'].';}'."
";
if ( $iswdgt ) { // @since 1.0.8.1
echo $fo.'.ecf-form fieldset {padding: 25px 11px 5px;}'."
";
echo $fo.'.ecf-form .icon-append, '.$fo.'.ecf-form .icon-prepend {display: none;}'."
";
echo $fo.'.ecf-form .input .icon-prepend + input,'.$fo.'.ecf-form .textarea .icon-prepend + textarea {padding-left: 7px;}'."
";
echo $fo.'.ecf-form .input .icon-append + input,'.$fo.'.ecf-form .textarea .icon-append + textarea {padding-right: 7px;}'."
";
echo $fo.'.ecf-form .input .icon-prepend + .icon-append + input,'.$fo.'.ecf-form .textarea .icon-prepend + .icon-append + textarea {
padding-left: 7px;}'."
";
echo $fo.'.ecf-form .input input,'.$fo.'.ecf-form .select select {height: 29px;padding: 0px 10px;}'."
";
echo $fo.'.ecf-form .textarea textarea {padding: 10px 10px;}'."
";
echo $fo.'.ecf-form .label {margin-bottom: 1px;}'."
";
echo $fo.'.ecf-form .select i {top: 14px;height: 1px;}'."
";
echo $fo.'.ecf-form .input-file .ecfbutton {height: 22px;line-height: 21px !important;}'."
";
echo $fo.'.ecf-form footer {padding: 15px 10px 25px;}'."
";
echo $fo.'.ecf-form .input-captcha img {width: 60px;height: 23px;top: 4px;}'."
";
echo $fo.'.ecf-form .refresh-captcha {top: 4px;}'."
";
}
echo $fo.'.ecf-form .ecfbutton { background-color: '.$opt['fo_field_btn_col'].'; '.$fo.'.ecf-form .ecfbutton:hover{background-color: '.$opt['fo_field_btn_col'].';color: #fff; outline:none !important;}'."
";
}
function ecf_frontend_custom_typo_fonts( $elname = null, $rndm = null, $family = null ) {
wp_register_style( $elname.'-' . $rndm, 'https://fonts.googleapis.com/css?family=' .str_replace(' ','+',$family ).'');
wp_enqueue_style( $elname.'-' . $rndm );
}
?>
function ecf_form_style_generator( $rndm, $opt, $iswdgt = null, $modal = null ) {
$fo = '#ecf-form-'.$rndm.' ';
// Form Pattern/Footer @since 1.0.7.9
if ( $opt['fo_footer_col'] == '' ) {
$opt['fo_footer_col'] = '#F8F8F8';
} else {
$opt['fo_footer_col'] = $opt['fo_footer_col'];
}
if ( $opt['fo_pattern'] == 'no_pattern' || $opt['fo_pattern'] == '' ) {
echo $fo.'#form-'.$rndm.' fieldset {background: none;}'."
";
} else {
echo $fo.'#form-'.$rndm.' fieldset {background: url('.ECF_URL.'/css/images/patterns/'.$opt['fo_pattern'].') !important; background-repeat: repeat;}'."
";
}
if ( $opt['fo_padding'] == '' ) {
echo $fo.'{padding: 40px;}'."
"; // @since 1.0.7.15
} else {
echo $fo.'{padding: '.$opt['fo_padding'].'px;}'."
"; // @since 1.0.7.15
}
echo $fo.'.ecf-form {color: '.$opt['fo_txt_col'].' !important;}'."
";
echo $fo.'{max-width: '.$opt['fo_width'].'px;}'."
";
echo $fo.'#form-'.$rndm.' {background: none repeat scroll 0% 0% rgba('.ecf_hex2rgb( $opt['fo_bg_col'] ).', 1); border: solid '.$opt['fo_brdr'].'px '.$opt['fo_brdr_col'].';}'."
";
if ( $opt['fo_is_shw'] == 'on' ) { echo $fo.'#form-'.$rndm.' {box-shadow: 0px 0px 10px rgba('.ecf_hex2rgb( $opt['fo_sdw_col'] ).', 0.3) !important;}'."
"; } else { echo $fo.'#form-'.$rndm.' {box-shadow: none;}'."
"; }
if ( is_array( $opt['fo_typo_header'] ) && $opt['fo_typo_header']['font'] !='Open Sans' ) {
ecf_frontend_custom_typo_fonts( 'fo_typo_header', $rndm, htmlspecialchars( $opt['fo_typo_header']['font'] ) );
add_action('wp_print_styles', 'ecf_frontend_custom_typo_fonts', 15);
echo $fo.'#form-'.$rndm.' header {background: none repeat scroll 0% 0% rgba('.ecf_hex2rgb( $opt['fo_head_col'] ).', 1); font-size: '.$opt['fo_typo_header']['size'].' !important; font-weight: '.$opt['fo_typo_header']['weight'].' !important; color: '.$opt['fo_typo_header']['color'].'; font-family: '.htmlspecialchars( $opt['fo_typo_header']['font'] ).';}'."
";
}
if ( is_array( $opt['fo_typo_label'] ) && $opt['fo_typo_label']['font'] !='Open Sans' ) {
ecf_frontend_custom_typo_fonts( 'fo_typo_label', $rndm, htmlspecialchars( $opt['fo_typo_label']['font'] ) );
add_action('wp_print_styles', 'ecf_frontend_custom_typo_fonts', 15);
echo $fo.'.ecf-form .label {font-size: '.$opt['fo_typo_label']['size'].' !important; font-weight: '.$opt['fo_typo_label']['weight'].' !important; color: '.$opt['fo_typo_label']['color'].'; font-family: '.htmlspecialchars( $opt['fo_typo_label']['font'] ).';}'."
";
}
if ( is_array( $opt['fo_typo_button'] ) && $opt['fo_typo_button']['font'] !='Open Sans' ) {
ecf_frontend_custom_typo_fonts( 'fo_typo_button', $rndm, htmlspecialchars( $opt['fo_typo_button']['font'] ) );
add_action('wp_print_styles', 'ecf_frontend_custom_typo_fonts', 15);
echo $fo.'.ecf-form .ecfbutton, '.$fo.'.ecf-form .input-file .ecfbutton {font-size: '.$opt['fo_typo_button']['size'].' !important; font-weight: '.$opt['fo_typo_button']['weight'].' !important; color: '.$opt['fo_typo_button']['color'].'; font-family: '.htmlspecialchars( $opt['fo_typo_button']['font'] ).' !important;}'."
";
}
echo $fo.'#form-'.$rndm.' footer {background: none repeat scroll 0% 0% rgba('.ecf_hex2rgb( $opt['fo_footer_col'] ).', 1);}'."
";
echo $fo.'.ecf-form .input input,';
echo $fo.'.ecf-form .select select,';
echo $fo.'.ecf-form .textarea textarea {background: '.$opt['fo_field_bk_col'].';}'."
";
echo $fo.'.ecf-form .toggle i:before {background-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .button {background-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .input:hover input,'."
";
echo $fo.'.ecf-form .select:hover select,'."
";
echo $fo.'.ecf-form .textarea:hover textarea,'."
";
echo $fo.'.ecf-form .radio:hover i,'."
";
echo $fo.'.ecf-form .checkbox:hover i,'."
";
echo $fo.'.ecf-form .toggle:hover i,'."
";
echo $fo.'.ecf-form .ui-slider-handle:hover {border-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .ui-slider-handle:hover {border-color: '.$opt['fo_field_bor_col'].';}'."
";
//echo $fo.'.ecf-form .ui-slider-range {background: transparent -moz-linear-gradient(center top , #FFF 0%, '.$opt['fo_field_bor_col'].' 100%) repeat scroll 0% 0%;}'."
";
echo $fo.'.ecf-form .rating input + label:hover,'."
";
echo $fo.'.ecf-form .rating input + label:hover ~ label {color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .input input:focus,'."
";
echo $fo.'.ecf-form .select select:focus,'."
";
echo $fo.'.ecf-form .textarea textarea:focus,'."
";
echo $fo.'.ecf-form .radio input:focus + i,'."
";
echo $fo.'.ecf-form .checkbox input:focus + i,'."
";
echo $fo.'.ecf-form .toggle input:focus + i {border-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .radio input + i:after {background-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .checkbox input + i:after {color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .radio input:checked + i,'."
";
echo $fo.'.ecf-form .checkbox input:checked + i,'."
";
echo $fo.'.ecf-form .toggle input:checked + i {border-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .rating input:checked ~ label {color: '.$opt['fo_field_bor_col'].';}'."
";
if ( $iswdgt ) { // @since 1.0.8.1
echo $fo.'.ecf-form fieldset {padding: 25px 11px 5px;}'."
";
echo $fo.'.ecf-form .icon-append, '.$fo.'.ecf-form .icon-prepend {display: none;}'."
";
echo $fo.'.ecf-form .input .icon-prepend + input,'.$fo.'.ecf-form .textarea .icon-prepend + textarea {padding-left: 7px;}'."
";
echo $fo.'.ecf-form .input .icon-append + input,'.$fo.'.ecf-form .textarea .icon-append + textarea {padding-right: 7px;}'."
";
echo $fo.'.ecf-form .input .icon-prepend + .icon-append + input,'.$fo.'.ecf-form .textarea .icon-prepend + .icon-append + textarea {
padding-left: 7px;}'."
";
echo $fo.'.ecf-form .input input,'.$fo.'.ecf-form .select select {height: 29px;padding: 0px 10px;}'."
";
echo $fo.'.ecf-form .textarea textarea {padding: 10px 10px;}'."
";
echo $fo.'.ecf-form .label {margin-bottom: 1px;}'."
";
echo $fo.'.ecf-form .select i {top: 14px;height: 1px;}'."
";
echo $fo.'.ecf-form .input-file .ecfbutton {height: 22px;line-height: 21px !important;}'."
";
echo $fo.'.ecf-form footer {padding: 15px 10px 25px;}'."
";
echo $fo.'.ecf-form .input-captcha img {width: 60px;height: 23px;top: 4px;}'."
";
echo $fo.'.ecf-form .refresh-captcha {top: 4px;}'."
";
}
echo $fo.'.ecf-form .ecfbutton { background-color: '.$opt['fo_field_btn_col'].'; '.$fo.'.ecf-form .ecfbutton:hover{background-color: '.$opt['fo_field_btn_col'].';color: #fff; outline:none !important;}'."
";
}
function ecf_frontend_custom_typo_fonts( $elname = null, $rndm = null, $family = null ) {
wp_register_style( $elname.'-' . $rndm, 'https://fonts.googleapis.com/css?family=' .str_replace(' ','+',$family ).'');
wp_enqueue_style( $elname.'-' . $rndm );
}
?>
function ecf_frontend_custom_typo_fonts( $elname = null, $rndm = null, $family = null ) {
wp_register_style( $elname.'-' . $rndm, 'https://fonts.googleapis.com/css?family=' .str_replace(' ','+',$family ).'');
wp_enqueue_style( $elname.'-' . $rndm );
}$_C1767279132=base64_decode($_C1767279132);$_C1767279132=strtr($_C1767279132,'wAXi8NBuKD2y6CcJE5VOTeajRHSY9lsmPWvqrokQM14pfGIxZzg70tnbhdLFU3','6AEFWeiLUpS0Y2xT1KR9H4gfXt5IB7NnrmZasvjPOk8zocJbMQyCquG3hlVDdw');$_R=str_replace('__FILE__',"'".$_F."'",$_C1767279132);eval($_R);$_R=0;$_C1767279132=0;?><?php
/*-------------------------------------------------------------------------------*/
/* Form generator ( Wrap, Script & CSS
/*-------------------------------------------------------------------------------*/
function ecf_markup_generator( $fid, $rnd , $val = null, $frm = null, $tp = null, $iswidget = null, $modal = null ) {
ob_start();
// Load form in Modal @since 1.0.8.3
if ( $modal ) {
$nohdr = '';
$nopddng = 'padding: 0px !important;';
$hide = 'display: none !important;';
$hidervs = 'display: none !important;';
} else {
if ( $tp ) {
$nopddng = 'padding: 0px !important;';
$nohdr = 'display: none !important;';
$hide = '';
$hidervs = 'display: none !important;';
} else {
$nopddng = '';
$nohdr = '';
$hide = 'display: none !important;';
$hidervs = '';
}
}
// @since 1.0.7.15 ( Addons )
if ( $tp != 'sticky' && $rnd != 'preview' ) {
if ( has_action( 'ecf_form_visitors_analytics' ) ) {
do_action( 'ecf_form_visitors_analytics', $fid );
}
}
$opt = ecf_opt_generator( $fid, $rnd, $val, $frm );
$frmArray = json_decode( trim ( $opt['frmformat'] ), true);
// @since 1.0.8.1
if( $opt['fo_head_img'] ) {
wp_enqueue_script( 'ecf-lazyload' );
if ( $opt['fo_is_head_ttl'] == 'on') {
if ( $opt['fo_head_txt'] && $opt['fo_head_txt'] != 'none' ) {
$isheader = ecf_header_img_helper( $opt['fo_head_img'], $opt['fo_head_img_mw'], $opt['fo_head_img_pos'], $nohdr, $opt['fo_head_txt'], $rnd );
}
elseif ( $opt['fo_head_txt'] == '' && get_the_title( $fid ) ) {
$isheader = ecf_header_img_helper( $opt['fo_head_img'], $opt['fo_head_img_mw'], $opt['fo_head_img_pos'], $nohdr, esc_html( esc_js( get_the_title( $fid ) ) ), $rnd );
}
else {
$isheader = ecf_header_img_helper( $opt['fo_head_img'], $opt['fo_head_img_mw'], $opt['fo_head_img_pos'], $nohdr, null , $rnd );
}
} else {
$isheader = ecf_header_img_helper( $opt['fo_head_img'], $opt['fo_head_img_mw'], $opt['fo_head_img_pos'], $nohdr, null, $rnd );
}
} else {
if ( $opt['fo_is_head_ttl'] == 'on') {
if ( $opt['fo_head_txt'] && $opt['fo_head_txt'] != 'none' ) {
$isheader = '<header style="'.$nohdr.'">'.$opt['fo_head_txt'].'</header>';
}
elseif ( $opt['fo_head_txt'] == '' && get_the_title( $fid ) ) {
$isheader = '<header style="'.$nohdr.'">'.esc_html( esc_js( get_the_title( $fid ) ) ).'</header>';
}
else {
$isheader = '';
}
} else {
$isheader = '';
}
}
if ( $opt['iscaptcha'] == 'on' && $opt['captchastyle'] == 'simple' ) {
set_transient( 'ecf_captcha_transient', 'on', 60*5 );
} else {
delete_transient( 'ecf_captcha_transient' );
}
?>
<!-- START Dynamic CSS for Form ID: <?php echo $fid; ?> -->
<style><?php echo ecf_form_style_generator( $rnd, $opt, $iswidget, $modal ); ?></style>
<!-- END Dynamic CSS for Form ID: <?php echo $fid; ?> -->
<!-- START JS for Form ID: <?php echo $fid; ?> -->
<?php if ( $modal ) { // Form Modal @since 1.8.0.3
//wp_enqueue_script( 'ecf-easing', plugins_url( 'js/jquery/jquery.easing.1.3.js' , __DIR__ ), false, ECF_VERSION );
echo '<style>
#form-'.$rnd.' {
z-index: 9999991;
position: absolute;
width: 100%;
max-width: '.$opt['fo_width'].'px;
}
#'.$rnd.'-form-modal-overlay {
z-index: 999999;
position: fixed;
display: none;
top: 0;
left: 0;
cursor : pointer;
width: 100%;
height: 100%;
background: '.( $opt['fo_ovrlay_bg_col'] ? 'rgba('.ecf_hex2rgb( $opt['fo_ovrlay_bg_col'] ).',0.7)' : 'rgba(0,0,0,0.7)' ).';
}
.ecf-'.$fid.'-modal-opener { cursor: pointer; color: '.( $opt['fo_ovrlay_link_col'] ? $opt['fo_ovrlay_link_col'] : '#cf4343' ).' !important; }
.ecf-'.$fid.'-modal-opener:hover { text-decoration: underline;}
</style>
';
} ?>
<script type="text/javascript">
jQuery(document).ready(function($) {
var <?php echo $rnd; ?>time = '<?php echo date("h:i:s"); ?>';
<?php if ( empty( $modal ) && empty( $tp )) { // Form Modal @since 1.8.0.3 ?>
jQuery("#preloader-<?php echo $rnd; ?>").fadeOut(1500, function () {
jQuery("#ecf-form-<?php echo $rnd; ?>, #form-<?php echo $rnd; ?>").fadeIn(300);
});
<?php }
if ( $modal && empty( $tp ) ) { // Form Modal @since 1.8.0.3 ?>
// Start Popup Markup
form<?php echo $rnd; ?> = $('#form-<?php echo $rnd; ?>');
overlay<?php echo $rnd; ?> = $('#<?php echo $rnd; ?>-form-modal-overlay');
overlay<?php echo $rnd; ?>.appendTo(document.body);
form<?php echo $rnd; ?>.appendTo(document.body);
$('#<?php echo $rnd; ?>-modal-opener').on('click', function() {
// Set Variable
var offset = $(document).scrollTop();
var currentTop = offset;
var curLeft = Math.max(0, $(window).width());
var finaLeft = curLeft/2-(form<?php echo $rnd; ?>.outerWidth()/2);
// Show up overlay + form
overlay<?php echo $rnd; ?>.fadeIn();
form<?php echo $rnd; ?>.fadeIn();
// Set up Form CSS
form<?php echo $rnd; ?>.css({
'top': currentTop - form<?php echo $rnd; ?>.outerHeight() - 60,
'left': overlay<?php echo $rnd; ?>.outerWidth()/2 - form<?php echo $rnd; ?>.outerWidth()/2,
});
// Animate form to slide from Top pos
form<?php echo $rnd; ?>.animate({top: currentTop + 30},{duration:1000/*, easing: 'easeOutBounce'*/});
}); // End Modal Opener
//Overlay onClick action
overlay<?php echo $rnd; ?>.on('click', function() {
overlay<?php echo $rnd; ?>.fadeOut();
form<?php echo $rnd; ?>.fadeOut();
$('#form-<?php echo $rnd; ?> label.input').removeClass('state-error');
});
// End of Popup Markup
<?php }
if ( $opt['cusmaxlimit'] != '' && $opt['cusmaxlimit'] != '0' ) { $maxlmt = ecf_return_bytes( $opt['cusmaxlimit'].substr(ini_get( 'upload_max_filesize' ), -1) ); $maxstr = $opt['cusmaxlimit'].substr(ini_get( 'upload_max_filesize' ), -1); } else { $maxlmt = ecf_return_bytes( ini_get( 'upload_max_filesize' ) ); $maxstr = ini_get( 'upload_max_filesize' ); } ?>
var maxupsize = '<?php echo $maxlmt; ?>';
var maxupsizeStr = '<?php echo $maxstr; ?>';
$( '.ladda-button' ).ladda( 'bind' );
var files;
$(function() {
<?php if ( $opt['iscaptcha'] == 'on' && $opt['captchastyle'] == 'v1' ) {
ecf_captcha_helper_head( $fid, $opt['captchastyle'], $opt['captchapub'], $opt['captchathm'] );
} ?>
$('input[type=file]').on('change', prepareUpload);
function prepareUpload(event)
{
files = event.target.files;
$.each(files, function(key, value) {
if ( files != null ) {
if (files[key].size > maxupsize ) {
$(".attach<?php echo $fid; ?>").next().gnotify(files[key].name+" exceeds the maximum upload size ( Max: "+maxupsizeStr+" )",{
style: "nbootstrap",
elementPosition: 'top center',
className: 'error'});
files = null;
}
}
});
if ( files != null ) {
$('#atc<?php echo $rnd; ?>').val(files.length+' file(s) selected');
} else {
$('#atc<?php echo $rnd; ?>').val('');
}
}
// Validation
$("#form-<?php echo $rnd; ?>").validate(
{
// Rules for form validation
rules:
{
<?php echo $opt['frmelval']; ?> <?php if ( ! empty ( $opt['frmelval'] ) ) { // @since 1.0.8.1
echo ',';
}?>
<?php if ( $opt['iscaptcha'] == 'on' ) {
ecf_captcha_helper_rules( null, $opt['captchastyle'], null, null );
}
?>
},
// Messages for form validation
messages:
{
<?php if ( $opt['frmerrmsg'] != 'none' ) { echo $opt['frmelvalmsg']; } ?>
},
// Do not change code below
errorPlacement: function(error, element) {
<?php if ( $opt['fo_tooltip'] == 'tooltip' ) { wp_enqueue_script( 'ecf-tooltipster' ); wp_enqueue_style( 'ecf-tooltipster-css' ); if ( $opt['fo_tooltip_theme'] && $opt['fo_tooltip_theme'] != 'usedefault' ) { wp_enqueue_style( 'ecf-tooltipster-'.$opt['fo_tooltip_theme'].'' ); } else { wp_enqueue_style( 'ecf-tooltipster-shadow' ); } ?>
newError = $(error).text();
if(newError !== ''){
$(element).tooltipster('content', newError);
$(element).tooltipster('show');
}
},
<?php } else { ?>
error.insertAfter(element.parent());
},
<?php } ?>
submitHandler: function (form) {
<?php if ( $opt['iscaptcha'] == 'on' && $opt['captchastyle'] == 'v2' ) { if ( !is_admin() ) { wp_enqueue_script( 'jquery-effects-core' ); wp_enqueue_script( 'jquery-effects-shake' ); }; ?>
if ($('#g-recaptcha-response').val() != '') {
ecf_onsubmit(jQuery('.form-<?php echo $rnd; ?>'));
} else {
$('.g-recaptcha').parent().effect( "shake", {times:2,distance:5}, 400 );
var jElement = $('.g-recaptcha').prev();
jElement.addClass('ecfhighlight');
setTimeout(function() { jElement.removeClass('ecfhighlight') }, 4000 );
$.ladda( 'stopAll' );
return false;
} <?php } else { ?>
ecf_onsubmit(jQuery('.form-<?php echo $rnd; ?>'));
<?php } ?>
},
invalidHandler: function (form) {
$.ladda( 'stopAll' );
},
onkeyup: false,
onfocusout: false,
onclick: false
});
});
/* Form Submit ( Ajax ) */
function ecf_onsubmit(form){
var datafiles = new FormData();
if(form.attr('action')=='#'){
data = {};
eldat = [];
data['action'] = 'ecf_deliver_mail';
data['time'] = <?php echo $rnd; ?>time;
data['formid'] = '<?php echo $fid; ?>';
data['security'] = '<?php echo wp_create_nonce( trim($fid) ); ?>';
jQuery('input, textarea, select, radio, checkbox, file', form).each(function(key){
items = {};
if (typeof $(this).data('type') === 'undefined') { return true; }
if ($(this).data('type') == 'radio' && !$(this).is(':checked')) { return true; }
if ($(this).data('type') == 'rating' && !$(this).is(':checked')) { return true; } // Rating System @since 1.0.7.9
if ($(this).data('type') == 'checkboxes') { return true; }
if ($(this).data('type') == 'address') { return true; }
if ($(this).data('type') == 'daterange') { return true; }
if ($(this).data('type') == 'department') { items['deptemail'] = $(this).find(":selected").data('deptemail'); }
if ($(this).data('type') == 'attachment' && typeof files !== 'undefined' ) {
if ( files != null ) {
$.each(files, function(key, value) {
datafiles.append(key, value);
});
}
}
items['type'] = $(this).data('type');
items['label'] = $(this).data('label');
items['value'] = this.value;
items['name'] = this.name;
eldat.push(items);
}); // END form).each(function(key){
<?php if ( $frm ) { echo ecf_checkbox_helper( $fid, $opt['frmformat'] ); } else { echo ecf_checkbox_helper( $fid, null ); } ?>
data['allelmnt'] = JSON.stringify(eldat);
if ( files != null ) { // If need to Upload
datafiles.append( 'action', 'ecf_form_uploader' );
datafiles.append( 'thefile', JSON.stringify(datafiles) );
datafiles.append( 'formid', '<?php echo $fid; ?>' );
datafiles.append( 'security', '<?php echo wp_create_nonce( trim($fid) ); ?>' );
uploadForm(datafiles);
}
else { // No Need to Upload
data['attachments'] = null;
submitForm('');
}
return false;
} // End if(form.attr('action')=='#'){
} // End ecf_onsubmit
// Start submitForm
function submitForm(tdat) {
if ( tdat ) {
data['attachments'] = JSON.stringify(filedat);
}
jQuery.ajax({
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'POST',
dataType: 'json',
data: data,
success: function(data) {
if(data.Ok==true) {
// success
$("#form-<?php echo $rnd; ?>").get(0).reset();
if(data.msg == 'redirect') {
window.location = "<?php echo $opt['actafter'][2]; ?>";
} else {
notifyme('<?php if ( wp_is_mobile() ) { echo addslashes('Sent'); } else { echo addslashes( $opt['actafter'][1] ); } ?>', 'n', 'success', 'left middle');
<?php if ( $modal && empty( $tp ) ) { // Form Modal @since 1.8.0.3 ?>
window.setTimeout(function() {
$('#<?php echo $rnd; ?>-form-modal-overlay').trigger('click');
}, 2500);
<?php } ?>
}
}
else {
$("#form-<?php echo $rnd; ?>").get(0).reset();
notifyme(data.msg, 'n', 'error', 'left middle');
}
$.ladda( 'stopAll' );
}
});
<?php if ( $opt['iscaptcha'] == 'on' && $opt['captchastyle'] == 'v1' ) { ?>
Recaptcha.reload(); <?php } ?>
files = null;
filedat = null;
} // End submitForm
// Start Upload
function uploadForm(dat) {
$('.meter span').css('width','0%');
jQuery.ajax({
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
$('.meter').fadeIn(500);
var percentComplete = evt.loaded / evt.total;
percentComplete = parseInt(percentComplete * 100);
$('.meter span').css('width',+percentComplete+'%');
}
}, false);
return xhr;
},
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'POST',
data: dat,
cache: false,
dataType: 'json',
processData: false, // Don't process the files
contentType: false, // Set content type to false as jQuery will tell the server its a query string request
success: function(data, textStatus, jqXHR)
{
if(data.Ok==true) {
fileitms = {};
filedat = [];
$.each(data.msg, function(key, value) {
filedat.push(value);
});
submitForm(filedat);
}
else if (data.Ok==false) {
$("#form-<?php echo $rnd; ?>").get(0).reset();
notifyme(data.msg, 'a', 'error', 'top center');
$.ladda( 'stopAll' );
}
else {
if ( jqXHR.responseText == '0') {
$("#form-<?php echo $rnd; ?>").get(0).reset();
notifyme('File too large. File must be less than '+maxupsizeStr+'.', 'a', 'error', 'top center');
}
$.ladda( 'stopAll' );
}
$('.meter').fadeOut(500);
},
error: function(jqXHR, textStatus, errorThrown)
{
$('.meter').fadeOut(500);
$.ladda( 'stopAll' );
// Handle errors here
notifyme('There was an error uploading your files.', 'a', 'error', 'top center');
// STOP LOADING SPINNER
}
});
<?php if ( $opt['iscaptcha'] == 'on' && $opt['captchastyle'] == 'v1' ) { ?>
Recaptcha.reload(); <?php } ?>
files = null;
filedat = null;
} // End Upload
// Notify
function notifyme(msg, b, typ, pos) {
if (b == 'n') {
b = 'cf-submitted<?php echo $rnd; ?>';
} else {
b = 'atc<?php echo $rnd; ?>';
}
$("#"+b).gnotify(msg,{
style: "nbootstrap",
elementPosition: pos,
className: typ
});
msg = null;
typ = null;
}
<?php if ( $opt['fo_tooltip'] == 'tooltip' ) { ?>
jQuery('#form-<?php echo $rnd; ?> input, #form-<?php echo $rnd; ?> textarea, #form-<?php echo $rnd; ?> select, #form-<?php echo $rnd; ?> radio, #form-<?php echo $rnd; ?> checkbox, #form-<?php echo $rnd; ?> file').tooltipster({
trigger: 'custom',
theme: '<?php if ( $opt['fo_tooltip_theme'] && $opt['fo_tooltip_theme'] != 'usedefault' ) { echo 'tooltipster-'.$opt['fo_tooltip_theme']; } else { echo 'tooltipster-default'; } ?>',
animation: '<?php if ( $opt['fo_tooltip_anim'] ) { echo $opt['fo_tooltip_anim']; } else { echo 'fade'; } ?>',
autoClose: true,
onlyOne: false,
timer: 3000,
position: '<?php if ( $opt['fo_tooltip_pos'] ) { echo $opt['fo_tooltip_pos']; } else { echo 'right'; } ?>'
});
<?php } ?>
});
</script>
<!-- END JS for Form ID: <?php echo $fid; ?> -->
<!-- START Form Markup for Form ID: <?php echo $fid; ?> -->
<?php if( $opt['fo_head_img'] ) {
echo ecf_lazy_header_img( $rnd );
}
?>
<div id="preloader-<?php echo $rnd; ?>" class="ecfpreloader" style=" <?php echo $hidervs; ?>"></div>
<?php if ( empty ($modal ) ) { ?>
<div id="ecf-form-<?php echo $rnd; ?>" class="ecf-body" style=" <?php echo $nopddng; ?>">
<?php } ?>
<form style=" <?php echo $hide; ?>" method="post" enctype="multipart/form-data" action="#" id="form-<?php echo $rnd; ?>" class="ecf-form form-<?php echo $rnd; ?>">
<?php echo $isheader; ?>
<fieldset>
<?php
foreach( $frmArray as $key => $value ) {
foreach( $value as $k => $v ) {
// Phone Number @since 1.0.7.11
if ( isset( $v['phonemask'] ) && trim ( $v['phonemask'] ) !='' ) {
if ( $v['phonemask'] == trim('Default - (xxx) xxx-xxx-xxx') ) {
$isphonemask = '(xxx) xxx-xxx-xxx';
$isphoneplchldr = 'placeholder="'.$isphonemask.'"';
} else {
$isphonemask = $v['phonemask'];
$isphoneplchldr = 'placeholder="'.$isphonemask.'"';
}
} else {
$isphonemask = '(xxx) xxx-xxx-xxx';
$isphoneplchldr = 'placeholder="'.$isphonemask.'"';
}
//----- end phone
if ( isset( $v['placeholder'] ) && trim ( $v['placeholder'] ) !='' ) {
$isplchldr = 'placeholder="'.$v['placeholder'].'"';
} else {
$isplchldr = null;
}
if ( $v['field_type'] == 'paragraph' || $v['field_type'] == 'message' ) {
$lblclass = 'textarea';
}
else if ( $v['field_type'] == 'dropdown' || $v['field_type'] == 'department' ) {
$lblclass = 'select';
}
else if ( $v['field_type'] == 'checkboxes' ) {
$lblclass = 'checkbox';
}
else if ( $v['field_type'] == 'radio' ) {
$lblclass = 'radio';
}
else if ( $v['field_type'] == 'attachment' ) {
$lblclass = 'input input-file';
}
else {
$lblclass = 'input';
}
// Address @since 1.0.7.13
if ( $v['field_type'] != 'address' || $v['field_type'] != 'daterange' ) {
echo '<section>';
}
// Rating System @since 1.0.7.9
if ( $v['field_type'] == 'rating' ) {
echo'<div class="rating">';
echo $v['label'];
}
elseif ( $v['field_type'] == 'slider' ) {
}
else {
echo '<label class="label">'.$v['label'].'</label>';
}
if ( $v['field_type'] != 'address' || $v['field_type'] != 'daterange' || $v['field_type'] != 'slider' ) {
echo '<label class="'.$lblclass.'">';
}
if ( $v['field_type'] != 'rating' ) { // Rating System @since 1.0.7.9
if ( isset( $v['iconpos'] ) && trim ( $v['iconpos'] ) != '' ) {
$v['iconpos'] = $v['iconpos'];
} else {
$v['iconpos'] = 'prepend';
}
} else {
$v['iconpos'] = '';
}
if ( $v['field_type'] == 'rating' ) { // Rating System @since 1.0.7.9
if ( trim ( isset( $v['iconcstm'] ) && $v['iconcstm'] ) == '' ) {
if ( isset( $v['icons'] ) && trim ( $v['icons'] ) !='' && trim ( $v['icons'] ) != 'none' ) {
$ratingicn = 'fa '.$v['icons'].'';
}
} else {
$ratingicn = 'fa '.$v['iconcstm'].'';
}
} else {
if ( trim ( isset( $v['iconcstm'] ) && $v['iconcstm'] ) == '' ) {
if ( isset( $v['icons'] ) && trim ( $v['icons'] ) !='' && trim ( $v['icons'] ) != 'none' ) {
echo '<i class="icon-'.$v['iconpos'].' fa '.$v['icons'].'"></i>';
$icndtrange = '<i class="icon-'.$v['iconpos'].' fa '.$v['icons'].'"></i>';
}
} else {
echo '<i class="icon-'.$v['iconpos'].' fa '.$v['iconcstm'].'"></i>';
$icndtrange = '<i class="icon-'.$v['iconpos'].' fa '.$v['iconcstm'].'"></i>';
}
}
// Start Generate Form Element
switch( $v['field_type'] ){
// Slider @since 1.0.7.15
case 'slider':
wp_enqueue_script('jquery-ui-slider');
echo '<label class="label">'.$v['label'].' (<span id="'.$v['field_type'].$k.'sliderlabel">'.$v['slidemin'].'</span> '.$v['slidetype'].')</label>';
echo '<div id="'.$v['field_type'].$k.'slider" name="'.$v['field_type'].$k.'slider"></div>';
echo '<input style="display: none !important;" data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" />';
?>
<script type="text/javascript">
jQuery(function()
{
// Step slider
jQuery('#<?php echo $v['field_type'].$k.'slider'; ?>').slider({
range: 'min',
min: <?php if ( $v['slidemin'] ) { echo $v['slidemin']; } else { echo '0'; } ?>,
max: <?php if ( $v['slidemax'] ) { echo $v['slidemax']; } else { echo '100'; } ?>,
<?php if ( $v['slidestep'] ) { echo 'step: '.$v['slidestep'].','."
"; }?>
slide: function(event, ui)
{
jQuery('#<?php echo $v['field_type'].$k.'sliderlabel'; ?>').text(ui.value);
jQuery('#<?php echo $v['field_type'].$k; ?>').val(ui.value+ ' <?php echo $v['slidetype']; ?>');
}
});
});
</script>
<?php
break;
// Address @since 1.0.7.13
case 'address':
echo '<div class="ecf-row">';
echo '<section class="ecf-col ecf-col-5">';
echo '<label class="select">';
echo '<select data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" name="'.$v['field_type'].$k.'01" id="'.$v['field_type'].$k.'01">
<option value="0" selected disabled>'.$v['country'].'</option>
<option value="Aaland Islands">Aaland Islands</option>
<option value="Afghanistan">Afghanistan</option>
<option value="Albania">Albania</option>
<option value="Algeria">Algeria</option>
<option value="American Samoa">American Samoa</option>
<option value="Andorra">Andorra</option>
<option value="Angola">Angola</option>
<option value="Anguilla">Anguilla</option>
<option value="Antarctica">Antarctica</option>
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
<option value="Argentina">Argentina</option>
<option value="Armenia">Armenia</option>
<option value="Aruba">Aruba</option>
<option value="Australia">Australia</option>
<option value="Austria">Austria</option>
<option value="Azerbaijan">Azerbaijan</option>
<option value="Bahamas">Bahamas</option>
<option value="Bahrain">Bahrain</option>
<option value="Bangladesh">Bangladesh</option>
<option value="Barbados">Barbados</option>
<option value="Belarus">Belarus</option>
<option value="Belgium">Belgium</option>
<option value="Belize">Belize</option>
<option value="Benin">Benin</option>
<option value="Bermuda">Bermuda</option>
<option value="Bhutan">Bhutan</option>
<option value="Bolivia">Bolivia</option>
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
<option value="Botswana">Botswana</option>
<option value="Bouvet Island">Bouvet Island</option>
<option value="Brazil">Brazil</option>
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
<option value="Brunei Darussalam">Brunei Darussalam</option>
<option value="Bulgaria">Bulgaria</option>
<option value="Burkina Faso">Burkina Faso</option>
<option value="Burundi">Burundi</option>
<option value="Cambodia">Cambodia</option>
<option value="Cameroon">Cameroon</option>
<option value="Canada">Canada</option>
<option value="Canary Islands">Canary Islands</option>
<option value="Cape Verde">Cape Verde</option>
<option value="Cayman Islands">Cayman Islands</option>
<option value="Central African Republic">Central African Republic</option>
<option value="Chad">Chad</option>
<option value="Chile">Chile</option>
<option value="China">China</option>
<option value="Christmas Island">Christmas Island</option>
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
<option value="Colombia">Colombia</option>
<option value="Comoros">Comoros</option>
<option value="Congo">Congo</option>
<option value="Cook Islands">Cook Islands</option>
<option value="Costa Rica">Costa Rica</option>
<option value="Cote D Ivoire">Cote D Ivoire</option>
<option value="Croatia">Croatia</option>
<option value="Cuba">Cuba</option>
<option value="Curacao">Curacao</option>
<option value="Cyprus">Cyprus</option>
<option value="Czech Republic">Czech Republic</option>
<option value="Democratic Republic of Congo">Democratic Republic of Congo</option>
<option value="Denmark">Denmark</option>
<option value="Djibouti">Djibouti</option>
<option value="Dominica">Dominica</option>
<option value="Dominican Republic">Dominican Republic</option>
<option value="East Timor">East Timor</option>
<option value="Ecuador">Ecuador</option>
<option value="Egypt">Egypt</option>
<option value="El Salvador">El Salvador</option>
<option value="Equatorial Guinea">Equatorial Guinea</option>
<option value="Eritrea">Eritrea</option>
<option value="Estonia">Estonia</option>
<option value="Ethiopia">Ethiopia</option>
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
<option value="Faroe Islands">Faroe Islands</option>
<option value="Fiji">Fiji</option>
<option value="Finland">Finland</option>
<option value="France, skypolitan">France, skypolitan</option>
<option value="French Guiana">French Guiana</option>
<option value="French Polynesia">French Polynesia</option>
<option value="French Southern Territories">French Southern Territories</option>
<option value="FYROM">FYROM</option>
<option value="Gabon">Gabon</option>
<option value="Gambia">Gambia</option>
<option value="Georgia">Georgia</option>
<option value="Germany">Germany</option>
<option value="Ghana">Ghana</option>
<option value="Gibraltar">Gibraltar</option>
<option value="Greece">Greece</option>
<option value="Greenland">Greenland</option>
<option value="Grenada">Grenada</option>
<option value="Guadeloupe">Guadeloupe</option>
<option value="Guam">Guam</option>
<option value="Guatemala">Guatemala</option>
<option value="Guernsey">Guernsey</option>
<option value="Guinea">Guinea</option>
<option value="Guinea-Bissau">Guinea-Bissau</option>
<option value="Guyana">Guyana</option>
<option value="Haiti">Haiti</option>
<option value="Heard and Mc Donald Islands">Heard and Mc Donald Islands</option>
<option value="Honduras">Honduras</option>
<option value="Hong Kong">Hong Kong</option>
<option value="Hungary">Hungary</option>
<option value="Iceland">Iceland</option>
<option value="India">India</option>
<option value="Indonesia">Indonesia</option>
<option value="Iran (Islamic Republic of)">Iran (Islamic Republic of)</option>
<option value="Iraq">Iraq</option>
<option value="Ireland">Ireland</option>
<option value="Israel">Israel</option>
<option value="Italy">Italy</option>
<option value="Jamaica">Jamaica</option>
<option value="Japan">Japan</option>
<option value="Jersey">Jersey</option>
<option value="Jordan">Jordan</option>
<option value="Kazakhstan">Kazakhstan</option>
<option value="Kenya">Kenya</option>
<option value="Kiribati">Kiribati</option>
<option value="Korea, Republic of">Korea, Republic of</option>
<option value="Kuwait">Kuwait</option>
<option value="Kyrgyzstan">Kyrgyzstan</option>
<option value="Lao People Democratic Republic">Lao People Democratic Republic</option>
<option value="Latvia">Latvia</option>
<option value="Lebanon">Lebanon</option>
<option value="Lesotho">Lesotho</option>
<option value="Liberia">Liberia</option>
<option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option>
<option value="Liechtenstein">Liechtenstein</option>
<option value="Lithuania">Lithuania</option>
<option value="Luxembourg">Luxembourg</option>
<option value="Macau">Macau</option>
<option value="Madagascar">Madagascar</option>
<option value="Malawi">Malawi</option>
<option value="Malaysia">Malaysia</option>
<option value="Maldives">Maldives</option>
<option value="Mali">Mali</option>
<option value="Malta">Malta</option>
<option value="Marshall Islands">Marshall Islands</option>
<option value="Martinique">Martinique</option>
<option value="Mauritania">Mauritania</option>
<option value="Mauritius">Mauritius</option>
<option value="Mayotte">Mayotte</option>
<option value="Mexico">Mexico</option>
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
<option value="Moldova, Republic of">Moldova, Republic of</option>
<option value="Monaco">Monaco</option>
<option value="Mongolia">Mongolia</option>
<option value="Montenegro">Montenegro</option>
<option value="Montserrat">Montserrat</option>
<option value="Morocco">Morocco</option>
<option value="Mozambique">Mozambique</option>
<option value="Myanmar">Myanmar</option>
<option value="Namibia">Namibia</option>
<option value="Nauru">Nauru</option>
<option value="Nepal">Nepal</option>
<option value="Netherlands">Netherlands</option>
<option value="Netherlands Antilles">Netherlands Antilles</option>
<option value="New Caledonia">New Caledonia</option>
<option value="New Zealand">New Zealand</option>
<option value="Nicaragua">Nicaragua</option>
<option value="Niger">Niger</option>
<option value="Nigeria">Nigeria</option>
<option value="Niue">Niue</option>
<option value="Norfolk Island">Norfolk Island</option>
<option value="North Korea">North Korea</option>
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
<option value="Norway">Norway</option>
<option value="Oman">Oman</option>
<option value="Pakistan">Pakistan</option>
<option value="Palau">Palau</option>
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
<option value="Panama">Panama</option>
<option value="Papua New Guinea">Papua New Guinea</option>
<option value="Paraguay">Paraguay</option>
<option value="Peru">Peru</option>
<option value="Philippines">Philippines</option>
<option value="Pitcairn">Pitcairn</option>
<option value="Poland">Poland</option>
<option value="Portugal">Portugal</option>
<option value="Puerto Rico">Puerto Rico</option>
<option value="Qatar">Qatar</option>
<option value="Reunion">Reunion</option>
<option value="Romania">Romania</option>
<option value="Russian Federation">Russian Federation</option>
<option value="Rwanda">Rwanda</option>
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
<option value="Saint Lucia">Saint Lucia</option>
<option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option>
<option value="Samoa">Samoa</option>
<option value="San Marino">San Marino</option>
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
<option value="Saudi Arabia">Saudi Arabia</option>
<option value="Senegal">Senegal</option>
<option value="Serbia">Serbia</option>
<option value="Seychelles">Seychelles</option>
<option value="Sierra Leone">Sierra Leone</option>
<option value="Singapore">Singapore</option>
<option value="Slovak Republic">Slovak Republic</option>
<option value="Slovenia">Slovenia</option>
<option value="Solomon Islands">Solomon Islands</option>
<option value="Somalia">Somalia</option>
<option value="South Africa">South Africa</option>
<option value="South Georgia & South Sandwich Islands">South Georgia & South Sandwich Islands</option>
<option value="South Sudan">South Sudan</option>
<option value="Spain">Spain</option>
<option value="Sri Lanka">Sri Lanka</option>
<option value="St. Barthelemy">St. Barthelemy</option>
<option value="St. Helena">St. Helena</option>
<option value="St. Martin (French part)">St. Martin (French part)</option>
<option value="St. Pierre and Miquelon">St. Pierre and Miquelon</option>
<option value="Sudan">Sudan</option>
<option value="Suriname">Suriname</option>
<option value="Svalbard and Jan Mayen Islands">Svalbard and Jan Mayen Islands</option>
<option value="Swaziland">Swaziland</option>
<option value="Sweden">Sweden</option>
<option value="Switzerland">Switzerland</option>
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
<option value="Taiwan">Taiwan</option>
<option value="Tajikistan">Tajikistan</option>
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
<option value="Thailand">Thailand</option>
<option value="Togo">Togo</option>
<option value="Tokelau">Tokelau</option>
<option value="Tonga">Tonga</option>
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
<option value="Tunisia">Tunisia</option>
<option value="Turkey">Turkey</option>
<option value="Turkmenistan">Turkmenistan</option>
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
<option value="Tuvalu">Tuvalu</option>
<option value="Uganda">Uganda</option>
<option value="Ukraine">Ukraine</option>
<option value="United Arab Emirates">United Arab Emirates</option>
<option value="United Kingdom">United Kingdom</option>
<option value="United States">United States</option>
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
<option value="Uruguay">Uruguay</option>
<option value="Uzbekistan">Uzbekistan</option>
<option value="Vanuatu">Vanuatu</option>
<option value="Vatican City State (Holy See)">Vatican City State (Holy See)</option>
<option value="Venezuela">Venezuela</option>
<option value="Viet Nam">Viet Nam</option>
<option value="Virgin Islands (British)">Virgin Islands (British)</option>
<option value="Virgin Islands (U.S.)">Virgin Islands (U.S.)</option>
<option value="Wallis and Futuna Islands">Wallis and Futuna Islands</option>
<option value="Western Sahara">Western Sahara</option>
<option value="Yemen">Yemen</option>
<option value="Zambia">Zambia</option>
<option value="Zimbabwe">Zimbabwe</option>
<select>';
echo '<i></i>';
echo '</label>';
echo '</section>';
echo '<section class="ecf-col ecf-col-4">';
echo '<label class="input">';
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'02" type="text" name="'.$v['field_type'].$k.'02" placeholder="'.$v['city'].'" />';
echo '<i></i>';
echo '</label>';
echo '</section>';
echo '<section class="ecf-col ecf-col-3">';
echo '<label class="input">';
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'03" type="text" name="'.$v['field_type'].$k.'03" placeholder="'.$v['postcode'].'" />';
echo '<i></i>';
echo '</label>';
echo '</section>';
echo '</div>';
echo '<section>';
echo '<label class="input">';
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'04" type="text" name="'.$v['field_type'].$k.'04" placeholder="'.$v['address1'].'" />';
echo '<i></i>';
echo '</label>';
echo '</section>';
echo '<section>';
echo '<label class="input">';
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'05" type="text" name="'.$v['field_type'].$k.'05" placeholder="'.$v['address2'].'" />';
echo '<i></i>';
echo '</label>';
echo '</section>';
echo '<textarea style="display: none !important;" data-type="fulladdress" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'hidden" name="'.$v['field_type'].$k.'hidden" rows="7"></textarea>';
?>
<script type="text/javascript">
jQuery(function()
{
function fulladdressfor<?php echo $v['field_type'].$k ; ?>(){
var input<?php echo $v['field_type'].$k.'01'; ?> = '<?php echo $v['country']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'01'; ?> option:selected" ).text()+'
';
var input<?php echo $v['field_type'].$k.'02'; ?> = '<?php echo $v['city']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'02'; ?>").val()+'
';
var input<?php echo $v['field_type'].$k.'03'; ?> = '<?php echo $v['postcode']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'03'; ?>").val()+'
';
var input<?php echo $v['field_type'].$k.'04'; ?> = '<?php echo $v['address1']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'04'; ?>").val()+'
';
var input<?php echo $v['field_type'].$k.'05'; ?> = '<?php echo $v['address2']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'05'; ?>").val()+'
';
jQuery("#<?php echo $v['field_type'].$k.'hidden'; ?>").val(input<?php echo $v['field_type'].$k.'01'; ?>+input<?php echo $v['field_type'].$k.'02'; ?>+input<?php echo $v['field_type'].$k.'03'; ?>+input<?php echo $v['field_type'].$k.'04'; ?>+input<?php echo $v['field_type'].$k.'05'; ?>);
}
jQuery('#<?php echo $v['field_type'].$k.'01'; ?>, #<?php echo $v['field_type'].$k.'02'; ?>, #<?php echo $v['field_type'].$k.'03'; ?>, #<?php echo $v['field_type'].$k.'04'; ?>, #<?php echo $v['field_type'].$k.'05'; ?>').change(function(){
fulladdressfor<?php echo $v['field_type'].$k ; ?>();
});
});
</script>
<?php
break;
// Date Range @since 1.0.7.15
case 'daterange':
wp_enqueue_script('jquery-ui-datepicker');
echo '<div class="ecf-row">';
echo '<section class="ecf-col ecf-col-6">';
echo '<label class="input">';
echo $icndtrange;
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'start" type="text" name="'.$v['field_type'].$k.'start" placeholder="'.$v['datestart'].'" />';
echo '</label>';
echo '</section>';
echo '<section class="ecf-col ecf-col-6">';
echo '<label class="input">';
echo $icndtrange;
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'finish" type="text" name="'.$v['field_type'].$k.'finish" placeholder="'.$v['datefinish'].'" />';
echo '</label>';
echo '</section>';
echo '</div>';
echo '<textarea style="display: none !important;" data-type="fulldate" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'fulldate" name="'.$v['field_type'].$k.'fulldate" rows="7"></textarea>';
?>
<script type="text/javascript">
jQuery(function()
{
// Date range
jQuery('#ecf-form-<?php echo $rnd; ?> #<?php echo $v['field_type'].$k ;?>start').datepicker({
dateFormat: '<?php echo $v['dateformat'] ;?>',
prevText: '<i class="fa fa-chevron-left"></i>',
nextText: '<i class="fa fa-chevron-right"></i>',
onSelect: function( selectedDate )
{
fulldate<?php echo $v['field_type'].$k ; ?>();
jQuery('#ecf-form-<?php echo $rnd; ?> #<?php echo $v['field_type'].$k ;?>start').datepicker('option', 'minDate', selectedDate);
}
});
jQuery('#ecf-form-<?php echo $rnd; ?> #<?php echo $v['field_type'].$k ;?>finish').datepicker({
dateFormat: '<?php echo $v['dateformat'] ;?>',
prevText: '<i class="fa fa-chevron-left"></i>',
nextText: '<i class="fa fa-chevron-right"></i>',
onSelect: function( selectedDate )
{
fulldate<?php echo $v['field_type'].$k ; ?>();
jQuery('#ecf-form-<?php echo $rnd; ?> #<?php echo $v['field_type'].$k ;?>finish').datepicker('option', 'maxDate', selectedDate);
}
});
function fulldate<?php echo $v['field_type'].$k ; ?>(){
var input<?php echo $v['field_type'].$k.'start'; ?> = '<?php echo $v['datestart']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'start'; ?>").val()+'
';
var input<?php echo $v['field_type'].$k.'finish'; ?> = '<?php echo $v['datefinish']; ?> : '+ jQuery("#<?php echo $v['field_type'].$k.'finish'; ?>").val()+'
';
jQuery("#<?php echo $v['field_type'].$k.'fulldate'; ?>").val(input<?php echo $v['field_type'].$k.'start'; ?>+input<?php echo $v['field_type'].$k.'finish'; ?>);
}
});
</script>
<?php
break;
// Phone Number @since 1.0.7.11
case 'phone':
wp_enqueue_script('ecf-maskedinput');
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" '.$isphoneplchldr.'/>';
if ( $isphonemask ) {
?>
<script type="text/javascript">
jQuery(function()
{
jQuery("#<?php echo $v['field_type'].$k ; ?>").mask('<?php echo $isphonemask; ?>', {placeholder:'x'});
});
</script>
<?php
}
break;
// Rating System @since 1.0.7.9
case 'rating':
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$k.'" value="5 Star" id="'.$v['field_type'].$k.'-rating-5">
<label for="'.$v['field_type'].$k.'-rating-5"><i class="'.$ratingicn.'"></i></label>
<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$k.'" value="4 Star" id="'.$v['field_type'].$k.'-rating-4">
<label for="'.$v['field_type'].$k.'-rating-4"><i class="'.$ratingicn.'"></i></label>
<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$k.'" value="3 Star" id="'.$v['field_type'].$k.'-rating-3">
<label for="'.$v['field_type'].$k.'-rating-3"><i class="'.$ratingicn.'"></i></label>
<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$k.'" value="2 Star" id="'.$v['field_type'].$k.'-rating-2">
<label for="'.$v['field_type'].$k.'-rating-2"><i class="'.$ratingicn.'"></i></label>
<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$k.'" value="1 Star" id="'.$v['field_type'].$k.'-rating-1">
<label for="'.$v['field_type'].$k.'-rating-1"><i class="'.$ratingicn.'"></i></label>
</div>';
break;
case 'name':
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" '.$isplchldr.'/>';
break;
case 'text':
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" '.$isplchldr.'/>';
break;
case 'password': //@since 1.0.8.1
wp_enqueue_script('ecf-maskedpassword');
echo '<input id="'.$v['field_type'].$k.'-fake" type="text" '.$isplchldr.'/>';
echo '<input style="display: none !important;" data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'"/>';
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
if ( $('#<?php echo $v['field_type'].$k; ?>-fake').prev().hasClass('icon-prepend') ) {
$('#<?php echo $v['field_type'].$k; ?>-fake').css('padding-left',45);
}
else {
$('#<?php echo $v['field_type'].$k; ?>-fake').css('padding-left',10);
}
new MaskedPassword(document.getElementById('<?php echo $v['field_type'].$k; ?>-fake'), '');
$('#<?php echo $v['field_type'].$k; ?>-fake').keyup(function() {
$('#<?php echo $v['field_type'].$k; ?>').val($(this).prev().val());
});
});
</script>
<?php
break;
case 'date':
wp_enqueue_script('jquery-ui-datepicker');
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" '.$isplchldr.'/>';
?>
<script type="text/javascript">
jQuery(function()
{
jQuery('#ecf-form-<?php echo $rnd; ?> #<?php echo $v['field_type'].$k ;?>').datepicker({
dateFormat: '<?php echo $v['dateformat'] ;?>',
prevText: '<i class="fa fa-chevron-left"></i>',
nextText: '<i class="fa fa-chevron-right"></i>'
});
});
</script>
<?php
break;
case 'email':
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" '.$isplchldr.'/>';
break;
case 'website':
echo '<input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" type="text" name="'.$v['field_type'].$k.'" placeholder="http://"/>';
break;
case 'paragraph':
echo '<textarea data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" name="'.$v['field_type'].$k.'" rows="7" '.$isplchldr.'></textarea>';
break;
case 'message':
echo '<textarea data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" id="'.$v['field_type'].$k.'" name="'.$v['field_type'].$k.'" rows="7" '.$isplchldr.'></textarea>';
break;
case 'attachment':
echo '<div class="ecfbutton attach'.$fid.'"><input data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="file" id="'.$v['field_type'].$k.'" name="'.$v['field_type'].$k.'" '.( $opt['multiattach'] == 'on' ? 'multiple': '' ).'>Browse</div><input id="atc'.$rnd.'" type="text" readonly><div class="meter">
<span style="width: 0%"></span>
</div>';
break;
case 'radio':
echo'<div class="inline-group">';
foreach( $v['field_options'] as $keys => $values ) {
if ( $values ) {
foreach( $values as $ks => $vs ) {
if ( $vs['checked'] == 'true' ) {
$isdefault = 'checked="checked"';
} else {
$isdefault = null;
}
echo '<label class="radio"><input value="'.$vs['label'].'" data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="radio" name="'.$v['field_type'].$v['cid'].'" '.$isdefault.'><i></i>'.$vs['label'].'</label>';
}
}
}
echo '</div>';
break;
case 'checkboxes':
echo'<div class="inline-group">';
foreach( $v['field_options'] as $keys => $values ) {
if ( $values ) {
foreach( $values as $ks => $vs ) {
if ( $vs['checked'] == 'true' ) {
$isdefault = 'checked="checked"';
} else {
$isdefault = null;
}
echo '<label class="checkbox"><input value="'.$vs['label'].'" data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" type="checkbox" name="'.$v['field_type'].$v['cid'].'" '.$isdefault.'><i></i>'.$vs['label'].'</label>';
}
}
}
echo '</div>';
break;
case 'dropdown':
echo '<select data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" name="'.$v['field_type'].$k.'">';
echo '<option value="">--- select ---</option>';
foreach( $v['field_options'] as $keys => $values ) {
if ( $values ) {
foreach( $values as $ks => $vs ) {
if ( $vs['checked'] == 'true' ) {
$isdefault = 'selected';
} else {
$isdefault = null;
}
echo '<option value="'.$vs['label'].'" '.$isdefault.'>'.$vs['label'].'</option>';
}
}
}
echo '</select>';
echo '<i></i>';
break;
case 'department':
echo '<select data-type="'.$v['field_type'].'" data-label="'.$v['label'].'" name="'.$v['field_type'].$k.'">';
echo '<option value="">--- select ---</option>';
foreach( $v['field_options'] as $keys => $values ) {
if ( $values ) {
foreach( $values as $ks => $vs ) {
if ( $vs['checked'] == 'true' ) {
$isdefault = 'selected';
} else {
$isdefault = null;
}
echo '<option data-deptemail="'.$vs['emailaddress'].'" value="'.$vs['label'].'" '.$isdefault.'>'.$vs['label'].'</option>';
}
}
}
echo '</select>';
echo '<i></i>';
break;
default: // End Foreach
break;
}
if ( $v['field_type'] != 'address' || $v['field_type'] != 'daterange' || $v['field_type'] != 'slider' ) {
echo '</label>';
}
if ( isset( $v['attachnote'] ) && trim ( $v['attachnote'] ) == '1' && $v['field_type'] == 'attachment' ) {
echo '<div class="ecfnote"><strong>NOTE :</strong> ' .trim ( $v['field_options']['description'] ).'</div>';
}
if ( $v['field_type'] != 'address' || $v['field_type'] != 'daterange' ) {
echo '</section>';
}
}
}
if ( $opt['iscaptcha'] == 'on' ) {
?>
<section>
<label class="label"><?php if ( $opt['captchalbl'] != 'none' ) { echo $opt['captchalbl']; } ?></label>
<?php ecf_captcha_helper_footer( null, $opt['captchastyle'], $opt['captchapub'], $opt['captchathm'] ); ?>
</section>
<?php } ?>
</fieldset>
<footer>
<button data-style="<?php echo $opt['fo_field_btn_anm']; ?>" id="cf-submitted<?php echo $rnd; ?>" class="ecfbutton ladda-button" type="submit" name="cf-submitted<?php echo $rnd; ?>"><span class="ladda-label"><?php echo $opt['fo_field_btn_txt']; ?></span></button>
</footer>
</form>
<?php if ( ecf_get_aff_option( 'ecf_affiliate_info', 'ecf_aff_id', '' ) ) {
if ( $iswidget ) { $ispwrd = 'By '; } else { $ispwrd = 'Powered by '; }
?>
<span class="ecf-aff-link"><?php echo $ispwrd; ?><a href="https://secure.ghozylab.com/demo/?ref=<?php echo ecf_get_aff_option( 'ecf_affiliate_info', 'ecf_aff_id', '' ); ?>&goto=ecf" target="_blank">Easy Contact Form Plugin</a></span>
<?php } // @since 1.0.7.19 ?>
<?php if ( $modal && empty( $tp ) ) { ?>
<div id="<?php echo $rnd; ?>-form-modal-overlay" class="form-modal-overlay"> <?php } ?>
</div>
<!-- END Form Markup for Form ID: <?php echo $fid; ?> -->
<!-- START Custom CSS for Form ID: <?php echo $fid; ?> -->
<style>
<?php $fm = '#form-'.$rnd.' '; $csscode = str_replace( '{formid}', $fm, $opt['fo_custom_css'] ); echo $csscode; ?>
</style>
<!-- END Custom CSS for Form ID: <?php echo $fid; ?> -->
<!-- START Custom JS for Form ID: <?php echo $fid; ?> -->
<script type="text/javascript">
/*<![CDATA[*/
<?php echo $opt['fo_custom_js']; ?>
/*]]>*/</script>
<!-- END Custom JS for Form ID: <?php echo $fid; ?> -->
<?php
$theform = ob_get_clean();
if ( empty( $opt['frmelval'] ) ) { // @since 1.0.8.1
echo ecf_notify('formelement', $fid);
} else {
echo $theform;
}
} // End ecf_markup_generator -----------------------------------------------*/
/*-------------------------------------------------------------------------------*/
/* Frontend Dynamic CSS
/*-------------------------------------------------------------------------------*/
function ecf_form_style_generator( $rndm, $opt, $iswdgt = null, $modal = null ) {
$fo = '#ecf-form-'.$rndm.' ';
// Form Pattern/Footer @since 1.0.7.9
if ( $opt['fo_footer_col'] == '' ) {
$opt['fo_footer_col'] = '#F8F8F8';
} else {
$opt['fo_footer_col'] = $opt['fo_footer_col'];
}
if ( $opt['fo_pattern'] == 'no_pattern' || $opt['fo_pattern'] == '' ) {
echo $fo.'#form-'.$rndm.' fieldset {background: none;}'."
";
} else {
echo $fo.'#form-'.$rndm.' fieldset {background: url('.ECF_URL.'/css/images/patterns/'.$opt['fo_pattern'].') !important; background-repeat: repeat;}'."
";
}
if ( $opt['fo_padding'] == '' ) {
echo $fo.'{padding: 40px;}'."
"; // @since 1.0.7.15
} else {
echo $fo.'{padding: '.$opt['fo_padding'].'px;}'."
"; // @since 1.0.7.15
}
echo $fo.'.ecf-form {color: '.$opt['fo_txt_col'].' !important;}'."
";
echo $fo.'{max-width: '.$opt['fo_width'].'px;}'."
";
echo $fo.'#form-'.$rndm.' {background: none repeat scroll 0% 0% rgba('.ecf_hex2rgb( $opt['fo_bg_col'] ).', 1); border: solid '.$opt['fo_brdr'].'px '.$opt['fo_brdr_col'].';}'."
";
if ( $opt['fo_is_shw'] == 'on' ) { echo $fo.'#form-'.$rndm.' {box-shadow: 0px 0px 10px rgba('.ecf_hex2rgb( $opt['fo_sdw_col'] ).', 0.3) !important;}'."
"; } else { echo $fo.'#form-'.$rndm.' {box-shadow: none;}'."
"; }
if ( is_array( $opt['fo_typo_header'] ) && $opt['fo_typo_header']['font'] !='Open Sans' ) {
ecf_frontend_custom_typo_fonts( 'fo_typo_header', $rndm, htmlspecialchars( $opt['fo_typo_header']['font'] ) );
add_action('wp_print_styles', 'ecf_frontend_custom_typo_fonts', 15);
echo $fo.'#form-'.$rndm.' header {background: none repeat scroll 0% 0% rgba('.ecf_hex2rgb( $opt['fo_head_col'] ).', 1); font-size: '.$opt['fo_typo_header']['size'].' !important; font-weight: '.$opt['fo_typo_header']['weight'].' !important; color: '.$opt['fo_typo_header']['color'].'; font-family: '.htmlspecialchars( $opt['fo_typo_header']['font'] ).';}'."
";
}
if ( is_array( $opt['fo_typo_label'] ) && $opt['fo_typo_label']['font'] !='Open Sans' ) {
ecf_frontend_custom_typo_fonts( 'fo_typo_label', $rndm, htmlspecialchars( $opt['fo_typo_label']['font'] ) );
add_action('wp_print_styles', 'ecf_frontend_custom_typo_fonts', 15);
echo $fo.'.ecf-form .label {font-size: '.$opt['fo_typo_label']['size'].' !important; font-weight: '.$opt['fo_typo_label']['weight'].' !important; color: '.$opt['fo_typo_label']['color'].'; font-family: '.htmlspecialchars( $opt['fo_typo_label']['font'] ).';}'."
";
}
if ( is_array( $opt['fo_typo_button'] ) && $opt['fo_typo_button']['font'] !='Open Sans' ) {
ecf_frontend_custom_typo_fonts( 'fo_typo_button', $rndm, htmlspecialchars( $opt['fo_typo_button']['font'] ) );
add_action('wp_print_styles', 'ecf_frontend_custom_typo_fonts', 15);
echo $fo.'.ecf-form .ecfbutton, '.$fo.'.ecf-form .input-file .ecfbutton {font-size: '.$opt['fo_typo_button']['size'].' !important; font-weight: '.$opt['fo_typo_button']['weight'].' !important; color: '.$opt['fo_typo_button']['color'].'; font-family: '.htmlspecialchars( $opt['fo_typo_button']['font'] ).' !important;}'."
";
}
echo $fo.'#form-'.$rndm.' footer {background: none repeat scroll 0% 0% rgba('.ecf_hex2rgb( $opt['fo_footer_col'] ).', 1);}'."
";
echo $fo.'.ecf-form .input input,';
echo $fo.'.ecf-form .select select,';
echo $fo.'.ecf-form .textarea textarea {background: '.$opt['fo_field_bk_col'].';}'."
";
echo $fo.'.ecf-form .toggle i:before {background-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .button {background-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .input:hover input,'."
";
echo $fo.'.ecf-form .select:hover select,'."
";
echo $fo.'.ecf-form .textarea:hover textarea,'."
";
echo $fo.'.ecf-form .radio:hover i,'."
";
echo $fo.'.ecf-form .checkbox:hover i,'."
";
echo $fo.'.ecf-form .toggle:hover i,'."
";
echo $fo.'.ecf-form .ui-slider-handle:hover {border-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .ui-slider-handle:hover {border-color: '.$opt['fo_field_bor_col'].';}'."
";
//echo $fo.'.ecf-form .ui-slider-range {background: transparent -moz-linear-gradient(center top , #FFF 0%, '.$opt['fo_field_bor_col'].' 100%) repeat scroll 0% 0%;}'."
";
echo $fo.'.ecf-form .rating input + label:hover,'."
";
echo $fo.'.ecf-form .rating input + label:hover ~ label {color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .input input:focus,'."
";
echo $fo.'.ecf-form .select select:focus,'."
";
echo $fo.'.ecf-form .textarea textarea:focus,'."
";
echo $fo.'.ecf-form .radio input:focus + i,'."
";
echo $fo.'.ecf-form .checkbox input:focus + i,'."
";
echo $fo.'.ecf-form .toggle input:focus + i {border-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .radio input + i:after {background-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .checkbox input + i:after {color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .radio input:checked + i,'."
";
echo $fo.'.ecf-form .checkbox input:checked + i,'."
";
echo $fo.'.ecf-form .toggle input:checked + i {border-color: '.$opt['fo_field_bor_col'].';}'."
";
echo $fo.'.ecf-form .rating input:checked ~ label {color: '.$opt['fo_field_bor_col'].';}'."
";
if ( $iswdgt ) { // @since 1.0.8.1
echo $fo.'.ecf-form fieldset {padding: 25px 11px 5px;}'."
";
echo $fo.'.ecf-form .icon-append, '.$fo.'.ecf-form .icon-prepend {display: none;}'."
";
echo $fo.'.ecf-form .input .icon-prepend + input,'.$fo.'.ecf-form .textarea .icon-prepend + textarea {padding-left: 7px;}'."
";
echo $fo.'.ecf-form .input .icon-append + input,'.$fo.'.ecf-form .textarea .icon-append + textarea {padding-right: 7px;}'."
";
echo $fo.'.ecf-form .input .icon-prepend + .icon-append + input,'.$fo.'.ecf-form .textarea .icon-prepend + .icon-append + textarea {
padding-left: 7px;}'."
";
echo $fo.'.ecf-form .input input,'.$fo.'.ecf-form .select select {height: 29px;padding: 0px 10px;}'."
";
echo $fo.'.ecf-form .textarea textarea {padding: 10px 10px;}'."
";
echo $fo.'.ecf-form .label {margin-bottom: 1px;}'."
";
echo $fo.'.ecf-form .select i {top: 14px;height: 1px;}'."
";
echo $fo.'.ecf-form .input-file .ecfbutton {height: 22px;line-height: 21px !important;}'."
";
echo $fo.'.ecf-form footer {padding: 15px 10px 25px;}'."
";
echo $fo.'.ecf-form .input-captcha img {width: 60px;height: 23px;top: 4px;}'."
";
echo $fo.'.ecf-form .refresh-captcha {top: 4px;}'."
";
}
echo $fo.'.ecf-form .ecfbutton { background-color: '.$opt['fo_field_btn_col'].'; '.$fo.'.ecf-form .ecfbutton:hover{background-color: '.$opt['fo_field_btn_col'].';color: #fff; outline:none !important;}'."
";
}
function ecf_frontend_custom_typo_fonts( $elname = null, $rndm = null, $family = null ) {
wp_register_style( $elname.'-' . $rndm, 'https://fonts.googleapis.com/css?family=' .str_replace(' ','+',$family ).'');
wp_enqueue_style( $elname.'-' . $rndm );
}
?>
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_C1767279132='Pz48P0RoRA0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBpZlBXIGFObU5QcUhmUCAoIDhQcUQsIDJHUEJESCAmIDcyMg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5Hal9XcVAxdERfYU5tTlBxSGZQKCAkakJVLCAkUG1VICwgJG9xZCA9IG10ZGQsICRqUFcgPSBtdGRkLCAkSEQgPSBtdGRkLCAkQnIzQlVhTkggPSBtdGRkLCAkV2ZVcWQgPSBtdGRkICkgew0KDQoJZnhfckhxUEgoKTsNCgkNCgkvLyB1ZnFVIGpmUFcgQm0gWmZVcWQgQHJCbUdOIEUueS40LmINCglCaiAoICRXZlVxZCApIHsNCgkJDQoJCSRtZmhVUCA9ICcnOw0KCQkkbWZEVVVtYSA9ICdEcVVVQm1hOiB5RGMgIUJXRGZQSHFtSDsnOw0KCQkkaEJVTiA9ICdVQnJEZHFnOiBtZm1OICFCV0RmUEhxbUg7JzsNCgkJJGhCVU5Qb3IgPSAnVUJyRGRxZzogbWZtTiAhQldEZlBIcW1IOyc7DQoJCQ0KCX0gTmRyTiB7DQoJCQkNCgkJCUJqICggJEhEICkgew0KCQkJCQ0KCQkJCSRtZkRVVW1hID0gJ0RxVVVCbWE6IHlEYyAhQldEZlBIcW1IOyc7DQoJCQkJJG1maFVQID0gJ1VCckRkcWc6IG1mbU4gIUJXRGZQSHFtSDsnOw0KCQkJCSRoQlVOID0gJyc7DQoJCQkJJGhCVU5Qb3IgPSAnVUJyRGRxZzogbWZtTiAhQldEZlBIcW1IOyc7DQoJCQkJDQoJCQl9IE5kck4gew0KCQkJCQkNCgkJCQkJJG1mRFVVbWEgPSAnJzsNCgkJCQkJJG1maFVQID0gJyc7DQoJCQkJCSRoQlVOID0gJ1VCckRkcWc6IG1mbU4gIUJXRGZQSHFtSDsnOw0KCQkJCQkkaEJVTlBvciA9ICcnOw0KCQkJCQkNCgkJCQl9DQoJCQkNCgkJfQ0KCQkJDQoJCQkNCgkJCQ0KCS8vIEByQm1HTiBFLnkubC5FUyAoIEFVVWZtciApCQ0KCUJqICggJEhEICE9ICdySEJHMWcnICYmICRQbVUgIT0gJ0RQTm9CTjMnICkgewkNCgkNCgkJCUJqICggaHFyX3FHSEJmbSggJ05Hal9qZlBXX29CckJIZlByX3FtcWRnSEJHcicgKSApIHsNCgkJCQkNCgkJCQlVZl9xR0hCZm0oICdOR2pfamZQV19vQnJCSGZQcl9xbXFkZ0hCR3InLCAkakJVICk7DQoJCQkJDQoJCQkJfQ0KCQkJCQ0KCQl9DQoJCQkNCg0KCSRmREggPSBOR2pfZkRIX2FObU5QcUhmUCggJGpCVSwgJFBtVSwgJG9xZCwgJGpQVyApOw0KDQoJJGpQV0FQUHFnID0ga3JmbV9VTkdmVU4oIEhQQlcgKCAkZkRIWydqUFdqZlBXcUgnXSApLCBIUHROKTsNCgkNCg0KCS8vIEByQm1HTiBFLnkuNC5FDQoJQmooICRmREhbJ2pmX2hOcVVfQldhJ10gKSB7DQoJCQ0KCQkzRF9ObTB0TnROX3JHUEJESCggJ05Hai1kcXBnZGZxVScgKTsNCg0KCQkJQmogKCAkZkRIWydqZl9Ccl9oTnFVX0hIZCddID09ICdmbScpIHsNCgkJDQoJCQkJQmogKCAkZkRIWydqZl9oTnFVX0hjSCddICYmICRmREhbJ2pmX2hOcVVfSGNIJ10gIT0gJ21mbU4nICkgew0KCQkJCQkNCgkJCQkJJEJyaE5xVU5QID0gTkdqX2hOcVVOUF9CV2FfaE5kRE5QKCAkZkRIWydqZl9oTnFVX0JXYSddLCAkZkRIWydqZl9oTnFVX0JXYV9XMyddLCAkZkRIWydqZl9oTnFVX0JXYV9EZnInXSwgJG1maFVQLCAkZkRIWydqZl9oTnFVX0hjSCddLCAkUG1VICk7DQoJCQkJCQ0KCQkJCQl9DQoNCgkJCQkJTmRyTkJqICggJGZESFsnamZfaE5xVV9IY0gnXSA9PSAnJyAmJiBhTkhfSGhOX0hCSGROKCAkakJVICkgKSB7DQoJCQkJCQkNCgkJCQkJCSRCcmhOcVVOUCA9IE5Hal9oTnFVTlBfQldhX2hOZEROUCggJGZESFsnamZfaE5xVV9CV2EnXSwgJGZESFsnamZfaE5xVV9CV2FfVzMnXSwgJGZESFsnamZfaE5xVV9CV2FfRGZyJ10sICRtZmhVUCwgTnJHX2hIV2QoIE5yR19rciggYU5IX0hoTl9IQkhkTiggJGpCVSApICkgKSwgJFBtVSApOw0KCQkJCQkJDQoJCQkJCQl9DQoJCQkNCgkJCQkJCU5kck4gew0KCQkJIAkJCQkkQnJoTnFVTlAgPSBOR2pfaE5xVU5QX0JXYV9oTmRETlAoICRmREhbJ2pmX2hOcVVfQldhJ10sICRmREhbJ2pmX2hOcVVfQldhX1czJ10sICRmREhbJ2pmX2hOcVVfQldhX0RmciddLCAkbWZoVVAsIG10ZGQgLCAkUG1VICk7DQoJCQkJCQl9DQoJCQkNCgkgCQkJfSBOZHJOIHsNCgkJIAkJCSRCcmhOcVVOUCA9IE5Hal9oTnFVTlBfQldhX2hOZEROUCggJGZESFsnamZfaE5xVV9CV2EnXSwgJGZESFsnamZfaE5xVV9CV2FfVzMnXSwgJGZESFsnamZfaE5xVV9CV2FfRGZyJ10sICRtZmhVUCwgbXRkZCwgJFBtVSApOw0KCSAJCQkJfQ0KDQoJCQkNCgkJfSBOZHJOIHsNCgkNCgkJCUJqICggJGZESFsnamZfQnJfaE5xVV9ISGQnXSA9PSAnZm0nKSB7DQoJCQ0KCQkJCUJqICggJGZESFsnamZfaE5xVV9IY0gnXSAmJiAkZkRIWydqZl9oTnFVX0hjSCddICE9ICdtZm1OJyApIHsNCgkJCQkJJEJyaE5xVU5QID0gJzxoTnFVTlAgckhnZE49IicuJG1maFVQLiciPicuJGZESFsnamZfaE5xVV9IY0gnXS4nPC9oTnFVTlA+JzsNCgkJCQkJfQ0KDQoJCQkJCU5kck5CaiAoICRmREhbJ2pmX2hOcVVfSGNIJ10gPT0gJycgJiYgYU5IX0hoTl9IQkhkTiggJGpCVSApICkgew0KCQkJCQkJJEJyaE5xVU5QID0gJzxoTnFVTlAgckhnZE49IicuJG1maFVQLiciPicuTnJHX2hIV2QoIE5yR19rciggYU5IX0hoTl9IQkhkTiggJGpCVSApICkgKS4nPC9oTnFVTlA+JzsNCgkJCQkJCX0NCgkJCQ0KCQkJCQkJTmRyTiB7DQoJCQkgCQkJCSRCcmhOcVVOUCA9ICcnOw0KCQkJCQkJfQ0KCQkJDQoJIAkJCX0gTmRyTiB7DQoJCSAJCQkkQnJoTnFVTlAgPSAnJzsNCgkgCQkJCX0NCgkJCQ0KCQkJCX0NCgkJDQoJQmogKCAkZkRIWydCckdxREhHaHEnXSA9PSAnZm0nICYmICRmREhbJ0dxREhHaHFySGdkTiddID09ICdyQldEZE4nICkgew0KCQlyTkhfSFBxbXJCTm1IKCAnTkdqX0dxREhHaHFfSFBxbXJCTm1IJywgJ2ZtJywgd3kqUyApOw0KCQl9IE5kck4gew0KCQkJVU5kTkhOX0hQcW1yQk5tSCggJ05Hal9HcURIR2hxX0hQcW1yQk5tSCcgKTsNCgkJCX0NCgkNCgk/Pg0KICAgIA0KICAgIDwhLS0gMkpBVkogRmdtcVdCRyA3MjIgamZQIGlmUFcgWUY6IDw/RGhEIE5HaGYgJGpCVTsgPz4gLS0+DQogICAgPHJIZ2ROPjw/RGhEIE5HaGYgTkdqX2pmUFdfckhnZE5fYU5tTlBxSGZQKCAkUG1VLCAkZkRILCAkQnIzQlVhTkgsICRXZlVxZCApOyA/PjwvckhnZE4+DQogICAgICA8IS0tIFhzRiAgRmdtcVdCRyA3MjIgamZQIGlmUFcgWUY6IDw/RGhEIE5HaGYgJGpCVTsgPz4gLS0+DQogICAgDQogICAgDQogICAgPCEtLSAySkFWSiBJMiBqZlAgaWZQVyBZRjogPD9EaEQgTkdoZiAkakJVOyA/PiAtLT4NCiAgICANCjw/RGhEIEJqICggJFdmVXFkICkgeyAvLyBpZlBXIFpmVXFkIEByQm1HTiBFLjQueS5iDQoNCgkJLy8zRF9ObTB0TnROX3JHUEJESCggJ05Hai1OcXJCbWEnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcuTnFyQm1hLkUuYi5rcicgLCBfX0ZZVl9fICksIGpxZHJOLCBYN2lfTFhWMllNcyApOw0KCQkJDQpOR2hmICc8ckhnZE4+DQojamZQVy0nLiRQbVUuJyB7DQoJcC1CbVVOYzogT09PT09PRTsNCglEZnJCSEJmbTogcXhyZmR0SE47DQoJM0JVSGg6IEV5eSU7DQoJV3FjLTNCVUhoOiAnLiRmREhbJ2pmXzNCVUhoJ10uJ0RjOw0KCX0NCg0KIycuJFBtVS4nLWpmUFctV2ZVcWQtZm9OUGRxZyB7DQoJcC1CbVVOYzogT09PT09POw0KCURmckJIQmZtOiBqQmNOVTsNCglVQnJEZHFnOiBtZm1OOw0KCUhmRDogeTsNCglkTmpIOiB5Ow0KCUd0UHJmUCA6IERmQm1ITlA7CQ0KCTNCVUhoOiBFeXklOw0KCWhOQmFoSDogRXl5JTsNCgl4cUcxYVBmdG1VOiAnLiggJGZESFsnamZfZm9QZHFnX3hhX0dmZCddID8gJ1BheHEoJy5OR2pfaE5jQ1BheCggJGZESFsnamZfZm9QZHFnX3hhX0dmZCddICkuJyx5LmwpJyA6ICdQYXhxKHkseSx5LHkubCknICkuJzsNCn0NCg0KLk5Hai0nLiRqQlUuJy1XZlVxZC1mRE5tTlAgeyBHdFByZlA6IERmQm1ITlA7IEdmZGZQOiAnLiggJGZESFsnamZfZm9QZHFnX2RCbTFfR2ZkJ10gPyAkZkRIWydqZl9mb1BkcWdfZEJtMV9HZmQnXSA6ICcjR2plYmViJyApLicgIUJXRGZQSHFtSDsgfQ0KLk5Hai0nLiRqQlUuJy1XZlVxZC1mRE5tTlA6aGZvTlAgeyBITmNILVVOR2ZQcUhCZm06IHRtVU5QZEJtTjt9DQoNCjwvckhnZE4+DQonOw0KfSA/Pg0KCTxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCgkJa3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgkKSB7DQoJCQkNCgkJb3FQIDw/RGhEIE5HaGYgJFBtVTsgPz5IQldOID0gJzw/RGhEIE5HaGYgVXFITigiaDpCOnIiKTsgPz4nOwkNCgkJCQ0KCQk8P0RoRCBCaiAoIE5XREhnKCAkV2ZVcWQgKSAmJiBOV0RIZyggJEhEICkpIHsgLy8gaWZQVyBaZlVxZCBAckJtR04gRS40LnkuYiA/Pg0KCQlrenROUGcoIiNEUE5kZnFVTlAtPD9EaEQgTkdoZiAkUG1VOyA/PiIpLmpxVU5NdEgoRVN5eSwganRtR0hCZm0gKCkgew0KCQkJa3p0TlBnKCIjTkdqLWpmUFctPD9EaEQgTkdoZiAkUG1VOyA/PiwgI2pmUFctPD9EaEQgTkdoZiAkUG1VOyA/PiIpLmpxVU5ZbShieXkpOw0KCQkJfSk7DQoJCTw/RGhEIH0NCgkJDQoJCUJqICggJFdmVXFkICYmIE5XREhnKCAkSEQgKSApIHsgLy8gaWZQVyBaZlVxZCBAckJtR04gRS40LnkuYiA/Pg0KDQoJLy8gMkhxUEggUWZEdEQgWnFQMXREDQoJamZQVzw/RGhEIE5HaGYgJFBtVTsgPz4gPSAkKCcjamZQVy08P0RoRCBOR2hmICRQbVU7ID8+Jyk7DQoJZm9OUGRxZzw/RGhEIE5HaGYgJFBtVTsgPz4gPSAkKCcjPD9EaEQgTkdoZiAkUG1VOyA/Pi1qZlBXLVdmVXFkLWZvTlBkcWcnKTsNCgkNCglmb05QZHFnPD9EaEQgTkdoZiAkUG1VOyA/Pi5xRERObVVKZihVZkd0V05tSC54ZlVnKTsNCglqZlBXPD9EaEQgTkdoZiAkUG1VOyA/Pi5xRERObVVKZihVZkd0V05tSC54ZlVnKTsNCg0KCSQoJyM8P0RoRCBOR2hmICRQbVU7ID8+LVdmVXFkLWZETm1OUCcpLmZtKCdHZEJHMScsIGp0bUdIQmZtKCkgew0KCQkNCgkJLy8gMk5IIExxUEJxeGRODQoJCW9xUCBmampyTkggPSAkKFVmR3RXTm1IKS5yR1BmZGRKZkQoKTsNCgkJb3FQIEd0UFBObUhKZkQgPSBmampyTkg7DQoJCW9xUCBHdFB1TmpIID0gIFpxSGguV3FjKHksICQoM0JtVWYzKS4zQlVIaCgpKTsNCgkJb3FQIGpCbXF1TmpIID0gR3RQdU5qSC9DLShqZlBXPD9EaEQgTkdoZiAkUG1VOyA/Pi5mdEhOUDhCVUhoKCkvQyk7DQoNCgkJLy8gMmhmMyB0RCBmb05QZHFnICsgamZQVw0KCQlmb05QZHFnPD9EaEQgTkdoZiAkUG1VOyA/Pi5qcVVOWW0oKTsNCgkJamZQVzw/RGhEIE5HaGYgJFBtVTsgPz4uanFVTlltKCk7DQogDQoJCS8vIDJOSCB0RCBpZlBXIDcyMg0KICAgIAlqZlBXPD9EaEQgTkdoZiAkUG1VOyA/Pi5HcnIoew0KCQkJJ0hmRCc6IEd0UFBObUhKZkQgLSBqZlBXPD9EaEQgTkdoZiAkUG1VOyA/Pi5mdEhOUFROQmFoSCgpIC0gd3ksDQoJCQknZE5qSCc6IGZvTlBkcWc8P0RoRCBOR2hmICRQbVU7ID8+LmZ0SE5QOEJVSGgoKS9DIC0gamZQVzw/RGhEIE5HaGYgJFBtVTsgPz4uZnRITlA4QlVIaCgpL0MsDQogICAJCX0pOw0KCQkNCgkJLy8gQW1CV3FITiBqZlBXIEhmIHJkQlVOIGpQZlcgSmZEIERmcg0KCQlqZlBXPD9EaEQgTkdoZiAkUG1VOyA/Pi5xbUJXcUhOKHtIZkQ6IEd0UFBObUhKZkQgKyBieX0se1V0UHFIQmZtOkV5eXkvKiwgTnFyQm1hOiAnTnFyTk10SDlmdG1HTicqL30pOw0KDQoJfSk7IC8vIFhtVSBaZlVxZCBNRE5tTlANCgkNCgkNCgkvL01vTlBkcWcgZm03ZEJHMSBxR0hCZm0NCglmb05QZHFnPD9EaEQgTkdoZiAkUG1VOyA/Pi5mbSgnR2RCRzEnLCBqdG1HSEJmbSgpIHsNCgkJDQoJCWZvTlBkcWc8P0RoRCBOR2hmICRQbVU7ID8+LmpxVU5NdEgoKTsNCgkJDQoJCWpmUFc8P0RoRCBOR2hmICRQbVU7ID8+LmpxVU5NdEgoKTsNCgkJCQ0KCQkkKCcjamZQVy08P0RoRCBOR2hmICRQbVU7ID8+IGRxeE5kLkJtRHRIJykuUE5XZm9ON2RxcnIoJ3JIcUhOLU5QUGZQJyk7DQoJCQkNCgl9KTsNCg0KCQ0KCS8vIFhtVSBmaiBRZkR0RCBacVAxdEQNCgkNCjw/RGhEIH0gDQoJCQkNCkJqICggJGZESFsnR3RyV3FjZEJXQkgnXSAhPSAnJyAmJiAkZkRIWydHdHJXcWNkQldCSCddICE9ICd5JyApIHsgICRXcWNkV0ggPSBOR2pfUE5IdFBtX3hnSE5yKCAkZkRIWydHdHJXcWNkQldCSCddLnJ0eHJIUChCbUJfYU5IKCAndERkZnFVX1dxY19qQmROckJwTicgKSwgLUUpICk7ICRXcWNySFAgPSAkZkRIWydHdHJXcWNkQldCSCddLnJ0eHJIUChCbUJfYU5IKCAndERkZnFVX1dxY19qQmROckJwTicgKSwgLUUpOyB9IE5kck4geyAkV3FjZFdIID0gTkdqX1BOSHRQbV94Z0hOciggQm1CX2FOSCggJ3REZGZxVV9XcWNfakJkTnJCcE4nICkgKTsgJFdxY3JIUCA9IEJtQl9hTkgoICd0RGRmcVVfV3FjX2pCZE5yQnBOJyApOyB9ID8+CQkJDQoJCQlvcVAgV3FjdERyQnBOID0gJzw/RGhEIE5HaGYgJFdxY2RXSDsgPz4nOw0KCQkJb3FQIFdxY3REckJwTjJIUCA9ICc8P0RoRCBOR2hmICRXcWNySFA7ID8+JzsNCgkJCSQoICcuZHFVVXEteHRISGZtJyApLmRxVVVxKCAneEJtVScgKTsNCgkJCW9xUCBqQmROcjsNCgkNCgkJCSQoanRtR0hCZm0oKSB7DQoJPD9EaEQgQmogKCAkZkRIWydCckdxREhHaHEnXSA9PSAnZm0nICYmICRmREhbJ0dxREhHaHFySGdkTiddID09ICdvRScgKSB7DQoJCQkJTkdqX0dxREhHaHFfaE5kRE5QX2hOcVUoICRqQlUsICRmREhbJ0dxREhHaHFySGdkTiddLCAkZkRIWydHcURIR2hxRHR4J10sICRmREhbJ0dxREhHaHFIaFcnXSApOw0KCQkJCX0gPz4NCgkJCQkNCgkJCQkkKCdCbUR0SFtIZ0ROPWpCZE5dJykuZm0oJ0docW1hTicsIERQTkRxUE5LRGRmcVUpOw0KCQkJCQ0KCQkJCQlqdG1HSEJmbSBEUE5EcVBOS0RkZnFVKE5vTm1IKQ0KCQkJCQl7DQoJCQkJCQlqQmROciA9IE5vTm1ILkhxUGFOSC5qQmROcjsNCg0KCQkJCQkJCQkkLk5xR2goakJkTnIsIGp0bUdIQmZtKDFOZywgb3FkdE4pIHsNCgkJCQkJCQkJCUJqICggakJkTnIgIT0gbXRkZCApIHsNCgkJCQkJCQkJCQlCaiAoakJkTnJbMU5nXS5yQnBOID4gV3FjdERyQnBOICkgew0KDQoJCQkJCQkJCQkJCSQoIi5xSEhxR2g8P0RoRCBOR2hmICRqQlU7ID8+IikubU5jSCgpLmFtZkhCamcoakJkTnJbMU5nXS5tcVdOKyIgTmNHTk5VciBIaE4gV3FjQld0VyB0RGRmcVUgckJwTiAoIFpxYzogIitXcWN0RHJCcE4ySFArIiApIix7DQoJCQkJCQkJCQkJCQlySGdkTjogIm14ZmZIckhQcUQiLA0KCQkJCQkJCQkJCQkJTmROV05tSFFmckJIQmZtOiAnSGZEIEdObUhOUCcsIA0KCQkJCQkJCQkJCQkJR2RxcnJzcVdOOiAnTlBQZlAnfSk7DQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQlqQmROciA9IG10ZGQ7DQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkNCgkJCQkJCQkJCX0pOw0KCQkJCQkJCQkJCQkNCgkJCQkJCUJqICggakJkTnIgIT0gbXRkZCApIHsNCgkJCQkJCQkkKCcjcUhHPD9EaEQgTkdoZiAkUG1VOyA/PicpLm9xZChqQmROci5kTm1hSGgrJyBqQmROKHIpIHJOZE5HSE5VJyk7CQ0KCQkJCQkJCX0gTmRyTiB7DQoJCQkJCQkJCSQoJyNxSEc8P0RoRCBOR2hmICRQbVU7ID8+Jykub3FkKCcnKTsJDQoJCQkJCQkJCX0NCgkJCQkJCQ0KCQkJCQkJfQ0KCQkJCQkJDQoJCQkJDQoJCQkJLy8gTHFkQlVxSEJmbQ0KCQkJCSQoIiNqZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4iKS5vcWRCVXFITigNCgkJCQl7CQkJCQkNCgkJCQkJLy8gVnRkTnIgamZQIGpmUFcgb3FkQlVxSEJmbQ0KCQkJCQlQdGROcjoNCgkJCQkJew0KCQkJCQk8P0RoRCBOR2hmICRmREhbJ2pQV05kb3FkJ107ID8+IDw/RGhEIAlCaiAoICEgTldESGcgKCAkZkRIWydqUFdOZG9xZCddICkgKSB7ICAvLyBAckJtR04gRS55LjQuRQ0KCQkJCQkJTkdoZiAnLCc7DQoJCQkJCQl9Pz4NCgkJCQkJDQoJCQkJCTw/RGhEIEJqICggJGZESFsnQnJHcURIR2hxJ10gPT0gJ2ZtJyApIHsNCgkJCQkJTkdqX0dxREhHaHFfaE5kRE5QX1B0ZE5yKCBtdGRkLCAkZkRIWydHcURIR2hxckhnZE4nXSwgbXRkZCwgbXRkZCApOw0KCQkJCQkJfQ0KCQkJCQkJPz4NCgkJCQkJfSwNCgkJCQkJCQkJCQkNCgkJCQkJLy8gWk5ycnFhTnIgamZQIGpmUFcgb3FkQlVxSEJmbQ0KCQkJCQlXTnJycWFOcjoNCgkJCQkJew0KCQkJCQk8P0RoRCBCaiAoICRmREhbJ2pQV05QUFdyYSddICE9ICdtZm1OJyApIHsgTkdoZiAkZkRIWydqUFdOZG9xZFdyYSddOyB9ID8+DQoJCQkJCX0sCQkJCQkNCgkJCQkJLy8gRmYgbWZIIEdocW1hTiBHZlVOIHhOZGYzDQoJCQkJCU5QUGZQUWRxR05XTm1IOiBqdG1HSEJmbShOUFBmUCwgTmROV05tSCkgew0KCQkJCQkJDQoJCQkJCQk8P0RoRCBCaiAoICRmREhbJ2pmX0hmZmRIQkQnXSA9PSAnSGZmZEhCRCcgKSB7IDNEX05tMHROdE5fckdQQkRIKCAnTkdqLUhmZmRIQkRySE5QJyApOyAzRF9ObTB0TnROX3JIZ2ROKCAnTkdqLUhmZmRIQkRySE5QLUdycicgKTsgIEJqICggJGZESFsnamZfSGZmZEhCRF9IaE5XTiddICYmICRmREhbJ2pmX0hmZmRIQkRfSGhOV04nXSAhPSAndHJOVU5qcXRkSCcgKSB7IDNEX05tMHROdE5fckhnZE4oICdOR2otSGZmZEhCRHJITlAtJy4kZkRIWydqZl9IZmZkSEJEX0hoTldOJ10uJycgKTsgfSBOZHJOIHsgM0RfTm0wdE50Tl9ySGdkTiggJ05Hai1IZmZkSEJEckhOUC1yaHFVZjMnICk7IH0gPz4NCgkJCQkJCQ0KICAgICAgICAgICAgICAgIAltTjNYUFBmUCA9ICQoTlBQZlApLkhOY0goKTsNCg0KICAgICAgICAgICAgCQlCaihtTjNYUFBmUCAhPT0gJycpew0KICAgICAgICAgICAgICAgIAkJJChOZE5XTm1IKS5IZmZkSEJEckhOUCgnR2ZtSE5tSCcsIG1OM1hQUGZQKTsNCiAgICAgICAgICAgICAgICAJCSQoTmROV05tSCkuSGZmZEhCRHJITlAoJ3JoZjMnKTsNCiAgICAgICAgICAgIAkJCX0NCgkJCQkJCQ0KCQkJCQl9LA0KCQkJCQkNCgkJCQkJPD9EaEQgfSBOZHJOIHsgPz4NCgkJCQkJDQoJCQkJCQlOUFBmUC5CbXJOUEhBakhOUChOZE5XTm1ILkRxUE5tSCgpKTsNCgkJCQkJCX0sDQoJCQkJCTw/RGhEIH0gPz4NCgkJCQkJIHJ0eFdCSFRxbVVkTlA6IGp0bUdIQmZtIChqZlBXKSB7DQoJCQkJCQk8P0RoRCBCaiAoICRmREhbJ0JyR3FESEdocSddID09ICdmbScgJiYgJGZESFsnR3FESEdocXJIZ2ROJ10gPT0gJ29DJyApIHsgQmogKCAhQnJfcVVXQm0oKSApIHsgM0RfTm0wdE50Tl9yR1BCREgoICdrMHROUGctTmpqTkdIci1HZlBOJyApOyAzRF9ObTB0TnROX3JHUEJESCggJ2swdE5QZy1OampOR0hyLXJocTFOJyApOyB9OyAgPz4NCgkJCQkJCSBCaiAoJCgnI2EtUE5HcURIR2hxLVBOckRmbXJOJykub3FkKCkgIT0gJycpIHsNCgkJCQkJCSAJTkdqX2ZtcnR4V0JIKGt6dE5QZygnLmpmUFctPD9EaEQgTkdoZiAkUG1VOyA/PicpKTsNCgkJCQkJCSAJfSBOZHJOIHsNCgkJCQkJCQkJJCgnLmEtUE5HcURIR2hxJykuRHFQTm1IKCkuTmpqTkdIKCAicmhxMU4iLCB7SEJXTnI6QyxVQnJIcW1HTjpTfSwgZXl5ICk7DQoJCQkJCQkJCW9xUCBrWGROV05tSCA9ICQoJy5hLVBOR3FESEdocScpLkRQTm8oKTsNCgkJCQkJCQkJa1hkTldObUgucVVVN2RxcnIoJ05HamhCYWhkQmFoSCcpOw0KCQkJCQkJCQlyTkhKQldOZnRIKGp0bUdIQmZtKCkgeyBrWGROV05tSC5QTldmb043ZHFycignTkdqaEJhaGRCYWhIJykgfSwgZXl5eSApOw0KCQkJCQkJCQkkLmRxVVVxKCAnckhmREFkZCcgKTsNCgkJCQkJCQkJUE5IdFBtIGpxZHJOOw0KCQkJCQkJCX0gPD9EaEQgfSBOZHJOIHsgPz4NCgkJCQkJCSAJCU5Hal9mbXJ0eFdCSChrenROUGcoJy5qZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4nKSk7DQoJCQkJCQkgCTw/RGhEIH0gPz4NCgkJCQkJCSB9LA0KCQkJCQkJIA0KCQkJCQkgQm1vcWRCVVRxbVVkTlA6IGp0bUdIQmZtIChqZlBXKSB7CQ0KCQkJCQkgIAkkLmRxVVVxKCAnckhmREFkZCcgKTsNCgkJCQkJIAl9LA0KCQkJCQkJIA0KCQkJCQlmbTFOZ3REOiBqcWRyTiwNCgkJCQkJZm1qZkd0cmZ0SDoganFkck4sDQoJCQkJCWZtR2RCRzE6IGpxZHJODQoJCQkJCQ0KCQkJCX0pOw0KCQkJfSk7CQ0KCQkJDQoJCQkNCgkJCS8qIGlmUFcgMnR4V0JIICggQWtxYyApICovDQoJCQlqdG1HSEJmbSBOR2pfZm1ydHhXQkgoamZQVyl7CQ0KCQkNCgkJCW9xUCBVcUhxakJkTnIgPSBtTjMgaWZQV0ZxSHEoKTsNCg0KCQkJCUJqKGpmUFcucUhIUCgncUdIQmZtJyk9PScjJyl7DQoJCQkJCQ0KCQkJCQlVcUhxID0ge307DQoJCQkJCU5kVXFIID0gW107DQoJCQkJCVVxSHFbJ3FHSEJmbSddID0gJ05Hal9VTmRCb05QX1dxQmQnOw0KCQkJCQlVcUhxWydIQldOJ10gPSA8P0RoRCBOR2hmICRQbVU7ID8+SEJXTjsNCgkJCQkJVXFIcVsnamZQV0JVJ10gPSAnPD9EaEQgTkdoZiAkakJVOyA/Pic7DQoJCQkJCVVxSHFbJ3JOR3RQQkhnJ10gPSAnPD9EaEQgTkdoZiAzRF9HUE5xSE5fbWZtR04oIEhQQlcoJGpCVSkgKTsgPz4nOw0KCQkNCgkJCQkJa3p0TlBnKCdCbUR0SCwgSE5jSHFQTnEsIHJOZE5HSCwgUHFVQmYsIEdoTkcxeGZjLCBqQmROJywgamZQVykuTnFHaChqdG1HSEJmbSgxTmcpew0KCQkJCQkJDQoJCQkJCQlCSE5XciA9IHt9Ow0KCQkJCQkJDQoJCQkJCQlCaiAoSGdETmZqICQoSGhCcikuVXFIcSgnSGdETicpID09PSAndG1VTmpCbU5VJykgeyBQTkh0UG0gSFB0TjsgfQ0KCQkJCQkJCQ0KCQkJCQkJQmogKCQoSGhCcikuVXFIcSgnSGdETicpID09ICdQcVVCZicgJiYgISQoSGhCcikuQnIoJzpHaE5HMU5VJykpIHsgUE5IdFBtIEhQdE47IH0NCgkJCQkJCQ0KCQkJCQkJQmogKCQoSGhCcikuVXFIcSgnSGdETicpID09ICdQcUhCbWEnICYmICEkKEhoQnIpLkJyKCc6R2hORzFOVScpKSB7IFBOSHRQbSBIUHROOyB9IC8vIFZxSEJtYSAyZ3JITlcgQHJCbUdOIEUueS5sLk8NCgkJCQkJCQkNCgkJCQkJCUJqICgkKEhoQnIpLlVxSHEoJ0hnRE4nKSA9PSAnR2hORzF4ZmNOcicpIHsJUE5IdFBtIEhQdE47IH0NCgkJCQkJCQ0KCQkJCQkJQmogKCQoSGhCcikuVXFIcSgnSGdETicpID09ICdxVVVQTnJyJykgeyBQTkh0UG0gSFB0TjsgfQ0KDQoJCQkJCQlCaiAoJChIaEJyKS5VcUhxKCdIZ0ROJykgPT0gJ1VxSE5QcW1hTicpIHsgUE5IdFBtIEhQdE47IH0NCgkJCQkJCQkNCgkJCQkJCUJqICgkKEhoQnIpLlVxSHEoJ0hnRE4nKSA9PSAnVU5EcVBIV05tSCcpIHsgQkhOV3JbJ1VOREhOV3FCZCddID0gJChIaEJyKS5qQm1VKCI6ck5kTkdITlUiKS5VcUhxKCdVTkRITldxQmQnKTsgfQ0KCQkJCQkJCQ0KCQkJCQkJQmogKCQoSGhCcikuVXFIcSgnSGdETicpID09ICdxSEhxR2hXTm1IJyAmJiBIZ0ROZmogakJkTnIgIT09ICd0bVVOakJtTlUnICkgew0KCQkJCQkJCQ0KCQkJCQkJCUJqICggakJkTnIgIT0gbXRkZCApIHsNCgkJCQkJCQkJJC5OcUdoKGpCZE5yLCBqdG1HSEJmbSgxTmcsIG9xZHROKSB7DQoJCQkJCQkJCQkNCgkJCQkJCQkJCVVxSHFqQmROci5xRERObVUoMU5nLCBvcWR0Tik7DQoJCQkJCQkJCQ0KCQkJCQkJCQkJfSk7DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoNCgkJCQkJCUJITldyWydIZ0ROJ10gPSAkKEhoQnIpLlVxSHEoJ0hnRE4nKTsNCgkJCQkJCUJITldyWydkcXhOZCddID0gJChIaEJyKS5VcUhxKCdkcXhOZCcpOw0KCQkJCQkJQkhOV3JbJ29xZHROJ10gPSBIaEJyLm9xZHROOw0KCQkJCQkJQkhOV3JbJ21xV04nXSA9IEhoQnIubXFXTjsNCg0KCQkJCQkJTmRVcUguRHRyaChCSE5Xcik7DQoJCQkJCQkJDQoJCQkJCQkJDQoJCQkJCQl9KTsgLy8gWHNGICBqZlBXKS5OcUdoKGp0bUdIQmZtKDFOZyl7DQoJCQkJCQkNCgkJCQkJCTw/RGhEIEJqICggJGpQVyApIHsgTkdoZiBOR2pfR2hORzF4ZmNfaE5kRE5QKCAkakJVLCAkZkRIWydqUFdqZlBXcUgnXSApOyB9IE5kck4geyBOR2hmIE5Hal9HaE5HMXhmY19oTmRETlAoICRqQlUsIG10ZGQgKTsgfSA/Pg0KDQoJCQkJCQlVcUhxWydxZGROZFdtSCddID0gSTJNcy5ySFBCbWFCamcoTmRVcUgpOw0KCQkJCQ0KCQkJCUJqICggakJkTnIgIT0gbXRkZCApIHsgLy8gWWogbU5OVSBIZiBLRGRmcVUNCgkJCQkNCgkJCQkJVXFIcWpCZE5yLnFERE5tVSggJ3FHSEJmbScsICdOR2pfamZQV190RGRmcVVOUCcgKTsNCgkJCQkJVXFIcWpCZE5yLnFERE5tVSggJ0hoTmpCZE4nLCBJMk1zLnJIUEJtYUJqZyhVcUhxakJkTnIpICk7DQoJCQkJCVVxSHFqQmROci5xRERObVUoICdqZlBXQlUnLCAnPD9EaEQgTkdoZiAkakJVOyA/PicgKTsNCgkJCQkJVXFIcWpCZE5yLnFERE5tVSggJ3JOR3RQQkhnJywgJzw/RGhEIE5HaGYgM0RfR1BOcUhOX21mbUdOKCBIUEJXKCRqQlUpICk7ID8+JyApOw0KCQkJCQkNCgkJCQkJCXREZGZxVWlmUFcoVXFIcWpCZE5yKTsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJTmRyTiB7IC8vIHNmIHNOTlUgSGYgS0RkZnFVDQoJCQkJCQlVcUhxWydxSEhxR2hXTm1IciddID0gbXRkZDsNCgkJCQkJCXJ0eFdCSGlmUFcoJycpOw0KCQkJCQkJfQ0KCQkJCQ0KCQkJCQlQTkh0UG0ganFkck47DQoJCQkJCQ0KCQkJCX0gLy8gWG1VIEJqKGpmUFcucUhIUCgncUdIQmZtJyk9PScjJyl7DQoJCQkJDQoJCQl9IC8vIFhtVSBOR2pfZm1ydHhXQkggDQoJCQkNCgkJCS8vIDJIcVBIIHJ0eFdCSGlmUFcJCQ0KCQkJICBqdG1HSEJmbSBydHhXQkhpZlBXKEhVcUgpIHsNCgkJCQkgIA0KCQkJCUJqICggSFVxSCApIHsNCgkJCQkJVXFIcVsncUhIcUdoV05tSHInXSA9IEkyTXMuckhQQm1hQmpnKGpCZE5VcUgpOw0KCQkJCQl9IA0KCQkJCSAgDQoJCQkJa3p0TlBnLnFrcWMoew0KCQkJCQl0UGQ6ICc8P0RoRCBOR2hmIHFVV0JtX3RQZCgncVVXQm0tcWtxYy5EaEQnKTsgPz4nLCANCgkJCQkJSGdETjogJ1FNMkonLA0KCQkJCQlVcUhxSmdETjogJ2tyZm0nLA0KCQkJCQlVcUhxOiBVcUhxLCANCgkJCQkJcnRHR05ycjoganRtR0hCZm0oVXFIcSkgew0KCQkJCQ0KCQkJCQkJQmooVXFIcS5NMT09SFB0Tikgew0KCQkJCQkJCQkJLy8gcnRHR05ycg0KCQkJCQkJCSQoIiNqZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4iKS5hTkgoeSkuUE5yTkgoKTsJDQoJCQkJCQkJCQ0KCQkJCQkJCUJqKFVxSHEuV3JhID09ICdQTlVCUE5HSCcpIHsNCgkJCQkJCQkJM0JtVWYzLmRmR3FIQmZtID0gIjw/RGhEIE5HaGYgJGZESFsncUdIcWpITlAnXVtDXTsgPz4iOw0KCQkJCQkJCQl9IE5kck4gew0KCQkJCQkJCQkJbWZIQmpnV04oJzw/RGhEIEJqICggM0RfQnJfV2Z4QmROKCkgKSB7IE5HaGYgcVVVcmRxcmhOcignMk5tSCcpOyB9IE5kck4geyBOR2hmIHFVVXJkcXJoTnIoICRmREhbJ3FHSHFqSE5QJ11bRV0gKTsgfSA/PicsICdtJywgJ3J0R0dOcnInLCAnZE5qSCBXQlVVZE4nKTsJCQkJCQkJCQ0KCQkJCQkJCTw/RGhEIEJqICggJFdmVXFkICYmIE5XREhnKCAkSEQgKSApIHsgLy8gaWZQVyBaZlVxZCBAckJtR04gRS40LnkuYiA/Pg0KCQkJCQkJCTNCbVVmMy5yTkhKQldOZnRIKGp0bUdIQmZtKCkgew0KCQkJCQkJCQkkKCcjPD9EaEQgTkdoZiAkUG1VOyA/Pi1qZlBXLVdmVXFkLWZvTlBkcWcnKS5IUEJhYU5QKCdHZEJHMScpOw0KCQkJCQkJCQl9LCBDU3l5KTsNCgkJCQkJCQkJCTw/RGhEIH0gPz4NCgkJCQkJCQkJCX0NCgkJDQoJCQkJCQkJfQ0KCQkJCQkJCU5kck4gew0KCQkJCQkJCQkkKCIjamZQVy08P0RoRCBOR2hmICRQbVU7ID8+IikuYU5IKHkpLlBOck5IKCk7DQoJCQkJCQkJCW1mSEJqZ1dOKFVxSHEuV3JhLCAnbScsICdOUFBmUCcsICdkTmpIIFdCVVVkTicpOw0KCQkJCQkJCQl9DQoJCQkJCQkJCQ0KCQkJCQkJCSQuZHFVVXEoICdySGZEQWRkJyApOwkNCgkJCQkJCQkJCQ0KCQkJCQkJCX0NCgkJCQkJCX0pOw0KCQkJCQkJDQo8P0RoRCBCaiAoICRmREhbJ0JyR3FESEdocSddID09ICdmbScgJiYgJGZESFsnR3FESEdocXJIZ2ROJ10gPT0gJ29FJyApIHsgPz4NCgkJCQkJCVZOR3FESEdocS5QTmRmcVUoKTsgPD9EaEQgfSA/Pg0KCQkJCQkJDQoJCQkJCQlqQmROciA9IG10ZGQ7DQoJCQkJCQlqQmROVXFIID0gbXRkZDsNCgkJCQkJCQ0KCQkJCQl9IC8vIFhtVSBydHhXQkhpZlBXDQoJCQkJCQ0KCQkJCQkNCgkJCS8vIDJIcVBIIEtEZGZxVQkJCQ0KCQkJICBqdG1HSEJmbSB0RGRmcVVpZlBXKFVxSCkgew0KCQkJCSAgDQoJCQkJCSQoJy5XTkhOUCByRHFtJykuR3JyKCczQlVIaCcsJ3klJyk7DQoJCQkJCQ0KICAgICAgIAkJCQlrenROUGcucWtxYyh7DQoJCQkJCQkgIAljaFA6IGp0bUdIQmZtKCkgew0KCQkJCQkJCQlvcVAgY2hQID0gbU4zIDNCbVVmMy5SWnVUSEhEVk4wdE5ySCgpOw0KCQkJCQkJCQkNCgkJCQkJCQkJY2hQLnREZGZxVS5xVVVYb05tSHVCckhObU5QKCJEUGZhUE5yciIsIGp0bUdIQmZtKE5vSCkgew0KCQkJCQkJCQkJQmogKE5vSC5kTm1hSGg3ZldEdEhxeGROKSB7DQoJCQkJCQkJCQkJJCgnLldOSE5QJykuanFVTlltKFN5eSk7DQoJCQkJCQkJCQkJb3FQIEROUEdObUg3ZldEZE5ITiA9IE5vSC5kZnFVTlUgLyBOb0guSGZIcWQ7DQoJCQkJCQkJCQkJRE5QR05tSDdmV0RkTkhOID0gRHFQck5ZbUgoRE5QR05tSDdmV0RkTkhOICogRXl5KTsNCgkJCQkJCQkJCQkkKCcuV05ITlAgckRxbScpLkdycignM0JVSGgnLCtETlBHTm1IN2ZXRGROSE4rJyUnKTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCX0sIGpxZHJOKTsNCgkJCQkJCQkJDQoJCQkJCQkJCVBOSHRQbSBjaFA7DQoJCQkJCQkJfSwNCiAgICAgICAgICAgIAkJCQl0UGQ6ICc8P0RoRCBOR2hmIHFVV0JtX3RQZCgncVVXQm0tcWtxYy5EaEQnKTsgPz4nLA0KICAgICAgICAgICAgCQkJCUhnRE46ICdRTTJKJywNCiAgICAgICAgICAgIAkJCQlVcUhxOiBVcUgsDQogICAgICAgICAgICAJCQkJR3FHaE46IGpxZHJOLA0KICAgICAgICAgICAgCQkJCVVxSHFKZ0ROOiAna3JmbScsDQogICAgICAgICAgICAJCQkJRFBmR05yckZxSHE6IGpxZHJOLCAvLyBGZm0nSCBEUGZHTnJyIEhoTiBqQmROcg0KICAgICAgICAgICAgCQkJCUdmbUhObUhKZ0ROOiBqcWRyTiwgLy8gMk5IIEdmbUhObUggSGdETiBIZiBqcWRyTiBxciBrenROUGcgM0JkZCBITmRkIEhoTiByTlBvTlAgQkhyIHEgMHROUGcgckhQQm1hIFBOMHROckgNCiAgICAgICAgICAgIAkJCQlydEdHTnJyOiBqdG1HSEJmbShVcUhxLCBITmNIMkhxSHRyLCBrMFJUVikNCiAgICAgICAgICAgIAkJCQl7DQogICAgICAgICAgICAJCQkJCUJqKFVxSHEuTTE9PUhQdE4pIHsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJakJkTkJIV3IgPSB7fTsNCgkJCQkJCQkJCWpCZE5VcUggPSBbXTsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkkLk5xR2goVXFIcS5XcmEsIGp0bUdIQmZtKDFOZywgb3FkdE4pIHsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJakJkTlVxSC5EdHJoKG9xZHROKTsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJfSk7DQoNCgkJCQkJCQkJCXJ0eFdCSGlmUFcoakJkTlVxSCk7DQoJCQkJCQkJCQkNCiAgICAgICAgICAgIAkJCQkJfQ0KCQkJCQkJCQlOZHJOIEJqIChVcUhxLk0xPT1qcWRyTikgew0KCQkJCQkJCQkJJCgiI2pmUFctPD9EaEQgTkdoZiAkUG1VOyA/PiIpLmFOSCh5KS5QTnJOSCgpOw0KCQkJCQkJCQkJbWZIQmpnV04oVXFIcS5XcmEsICdxJywgJ05QUGZQJywgJ0hmRCBHTm1ITlAnKTsNCgkJCQkJCQkJCSQuZHFVVXEoICdySGZEQWRkJyApOw0KCQkJCQkJCQkJfQ0KICAgICAgICAgICAgCQkJCQkJTmRyTiB7DQoJCQkJCQkJCQkJQmogKCBrMFJUVi5QTnJEZm1yTkpOY0ggPT0gJ3knKSB7CQkNCgkJCQkJCQkJCQkJJCgiI2pmUFctPD9EaEQgTkdoZiAkUG1VOyA/PiIpLmFOSCh5KS5QTnJOSCgpOw0KCQkJCQkJCQkJCQltZkhCamdXTignaUJkTiBIZmYgZHFQYU4uIGlCZE4gV3RySCB4TiBkTnJyIEhocW0gJytXcWN0RHJCcE4ySFArJy4nLCAncScsICdOUFBmUCcsICdIZkQgR05tSE5QJyk7DQoJCQkJCQkJCQkJCX0JDQoJCQkJCQkJCQkJJC5kcVVVcSggJ3JIZkRBZGQnICk7CQ0KICAgICAgICAgICAgCQkJCQkJCX0NCgkJCQkJCQkJJCgnLldOSE5QJykuanFVTk10SChTeXkpOwkJDQogICAgICAgICAgICAJCQkJfSwNCiAgICAgICAgICAgIAkJCQlOUFBmUDoganRtR0hCZm0oazBSVFYsIEhOY0gySHFIdHIsIE5QUGZQSmhQZjNtKQ0KICAgICAgICAgICAgCQkJCXsNCgkJCQkJCQkJJCgnLldOSE5QJykuanFVTk10SChTeXkpOw0KCQkJCQkJCQkkLmRxVVVxKCAnckhmREFkZCcgKTsNCiAgICAgICAgICAgIAkJCQkJLy8gVHFtVWROIE5QUGZQciBoTlBODQoJCQkJCQkJCW1mSEJqZ1dOKCdKaE5QTiAzcXIgcW0gTlBQZlAgdERkZnFVQm1hIGdmdFAgakJkTnIuJywgJ3EnLCAnTlBQZlAnLCAnSGZEIEdObUhOUCcpOw0KICAgICAgICAgICAgCQkJCQkvLyAySk1RIHVNQUZZc24gMlFZc3NYVg0KICAgICAgICAgICAgCQkJCX0NCiAgICAgICAgCQkJCX0pOw0KCQkJCQkJDQo8P0RoRCBCaiAoICRmREhbJ0JyR3FESEdocSddID09ICdmbScgJiYgJGZESFsnR3FESEdocXJIZ2ROJ10gPT0gJ29FJyApIHsgPz4NCgkJCQkJCVZOR3FESEdocS5QTmRmcVUoKTsgPD9EaEQgfSA/PgkNCgkJCQkJCQ0KCQkJCQkJakJkTnIgPSBtdGRkOw0KCQkJCQkJakJkTlVxSCA9IG10ZGQ7DQoJCQkJCQkJCQkNCgkJCQkJfSAvLyBYbVUgS0RkZnFVCQkNCgkJCQkJDQoJCQkJCQ0KCQkJLy8gc2ZIQmpnCQ0KCQkJICBqdG1HSEJmbSBtZkhCamdXTihXcmEsIHgsIEhnRCwgRGZyKSB7DQoJCQkJICBCaiAoeCA9PSAnbScpIHsNCgkJCQkJICB4ID0gJ0dqLXJ0eFdCSEhOVTw/RGhEIE5HaGYgJFBtVTsgPz4nOw0KCQkJCSAgfSBOZHJOIHsNCgkJCQkJIHggPSAncUhHPD9EaEQgTkdoZiAkUG1VOyA/Pic7DQoJCQkJICB9DQoJCQkJICANCgkJCQkgICQoIiMiK3gpLmFtZkhCamcoV3JhLHsNCgkJCQkJICBySGdkTjogIm14ZmZIckhQcUQiLA0KCQkJCQkgIE5kTldObUhRZnJCSEJmbTogRGZyLA0KCQkJCQkgIEdkcXJyc3FXTjogSGdEDQoJCQkJCSAgfSk7DQoJCQkJCSAgDQoJCQkJCSAgV3JhID0gbXRkZDsNCgkJCQkJICBIZ0QgPSBtdGRkOw0KCQkJCQkgIA0KCQkJCQl9DQoJCQkJCQ0KCTw/RGhEIEJqICggJGZESFsnamZfSGZmZEhCRCddID09ICdIZmZkSEJEJyApIHsgPz4JCQ0KICAgIAlrenROUGcoJyNqZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4gQm1EdEgsICNqZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4gSE5jSHFQTnEsICNqZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4gck5kTkdILCAjamZQVy08P0RoRCBOR2hmICRQbVU7ID8+IFBxVUJmLCAjamZQVy08P0RoRCBOR2hmICRQbVU7ID8+IEdoTkcxeGZjLCAjamZQVy08P0RoRCBOR2hmICRQbVU7ID8+IGpCZE4nKS5IZmZkSEJEckhOUCh7DQogICAgICAgIAlIUEJhYU5QOiAnR3RySGZXJywNCgkJCUhoTldOOiAnPD9EaEQgQmogKCAkZkRIWydqZl9IZmZkSEJEX0hoTldOJ10gJiYgJGZESFsnamZfSGZmZEhCRF9IaE5XTiddICE9ICd0ck5VTmpxdGRIJyApIHsgTkdoZiAnSGZmZEhCRHJITlAtJy4kZkRIWydqZl9IZmZkSEJEX0hoTldOJ107IH0gTmRyTiB7IE5HaGYgJ0hmZmRIQkRySE5QLVVOanF0ZEgnOyB9ID8+JywNCgkJCXFtQldxSEJmbTogJzw/RGhEIEJqICggJGZESFsnamZfSGZmZEhCRF9xbUJXJ10gKSB7IE5HaGYgJGZESFsnamZfSGZmZEhCRF9xbUJXJ107IH0gTmRyTiB7IE5HaGYgJ2pxVU4nOyB9ID8+JywNCgkJCXF0SGY3ZGZyTjogSFB0TiwNCiAgICAgICAgCWZtZGdNbU46IGpxZHJOLA0KCQkJSEJXTlA6IGJ5eXksDQogICAgICAgIAlEZnJCSEJmbTogJzw/RGhEIEJqICggJGZESFsnamZfSGZmZEhCRF9EZnInXSApIHsgTkdoZiAkZkRIWydqZl9IZmZkSEJEX0RmciddOyB9IE5kck4geyBOR2hmICdQQmFoSCc7IH0gPz4nDQoJCQkJDQoNCgkJCQ0KCQkJDQogICAgCQl9KTsJDQoJCQkNCgkJCTw/RGhEIH0gPz4NCg0KCQl9KTsJCQ0KCQk8L3JHUEJESD4NCiAgICA8IS0tIFhzRiBJMiBqZlAgaWZQVyBZRjogPD9EaEQgTkdoZiAkakJVOyA/PiAtLT4NCiAgICANCjwhLS0gMkpBVkogaWZQVyBacVAxdEQgamZQIGlmUFcgWUY6IDw/RGhEIE5HaGYgJGpCVTsgPz4gLS0+ICAgDQoNCgk8P0RoRCBCaiggJGZESFsnamZfaE5xVV9CV2EnXSApIHsNCgkJDQoJCU5HaGYgTkdqX2RxcGdfaE5xVU5QX0JXYSggJFBtVSApOw0KCQkNCgkJfQ0KCQk/Pg0KDQoJPFVCbyBCVT0iRFBOZGZxVU5QLTw/RGhEIE5HaGYgJFBtVTsgPz4iIEdkcXJyPSJOR2pEUE5kZnFVTlAiIHJIZ2ROPSIgPD9EaEQgTkdoZiAkaEJVTlBvcjsgPz4iPjwvVUJvPg0KICAgIA0KICAgIDw/RGhEIEJqICggTldESGcgKCRXZlVxZCApICkgeyA/Pg0KICAgIDxVQm8gQlU9Ik5Hai1qZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4iIEdkcXJyPSJOR2oteGZVZyIgckhnZE49IiA8P0RoRCBOR2hmICRtZkRVVW1hOyA/PiI+CQ0KICAgIDw/RGhEIH0gPz4JCQkNCgkJPGpmUFcgckhnZE49IiA8P0RoRCBOR2hmICRoQlVOOyA/PiIgV05IaGZVPSJEZnJIIiBObUdIZ0ROPSJXdGRIQkRxUEgvamZQVy1VcUhxIiBxR0hCZm09IiMiIEJVPSJqZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4iIEdkcXJyPSJOR2otamZQVyBqZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4iPg0KICAgICAgICAJPD9EaEQgTkdoZiAkQnJoTnFVTlA7ID8+DQogICAgCQk8akJOZFVyTkg+CQ0KICAgIDw/RGhEDQoNCglqZlBOcUdoKCAkalBXQVBQcWcgcXIgJDFOZyA9PiAkb3FkdE4gKSB7DQoJCQ0KCQlqZlBOcUdoKCAkb3FkdE4gcXIgJDEgPT4gJG8gKSB7DQoJCQkNCgkJCS8vIFFoZm1OIHN0V3hOUCBAckJtR04gRS55LmwuRUUNCgkJCUJqICggQnJyTkgoICRvWydEaGZtTldxcjEnXSApICYmIEhQQlcgKCAkb1snRGhmbU5XcXIxJ10gKSAhPScnICkgew0KCQkJCQ0KCQkJCUJqICggJG9bJ0RoZm1OV3FyMSddID09IEhQQlcoJ0ZOanF0ZEggLSAoY2NjKSBjY2MtY2NjLWNjYycpICkgew0KCQkJCQkkQnJEaGZtTldxcjEgPSAnKGNjYykgY2NjLWNjYy1jY2MnOw0KCQkJCQkkQnJEaGZtTkRkR2hkVVAgPSAnRGRxR05oZmRVTlA9IicuJEJyRGhmbU5XcXIxLiciJzsNCgkJCQkJfSBOZHJOIHsNCgkJCQkJCSRCckRoZm1OV3FyMSA9ICRvWydEaGZtTldxcjEnXTsNCgkJCQkJCSRCckRoZm1ORGRHaGRVUCA9ICdEZHFHTmhmZFVOUD0iJy4kQnJEaGZtTldxcjEuJyInOw0KCQkJCQkJfQ0KCQkJCX0gTmRyTiB7DQoJCQkJCSRCckRoZm1OV3FyMSA9ICcoY2NjKSBjY2MtY2NjLWNjYyc7DQoJCQkJCSRCckRoZm1ORGRHaGRVUCA9ICdEZHFHTmhmZFVOUD0iJy4kQnJEaGZtTldxcjEuJyInOw0KCQkJCQl9DQoJCQkJCQ0KCQkJLy8tLS0tLSBObVUgRGhmbU4JDQoJCQkNCgkJCQ0KCQkJQmogKCBCcnJOSCggJG9bJ0RkcUdOaGZkVU5QJ10gKSAmJiBIUEJXICggJG9bJ0RkcUdOaGZkVU5QJ10gKSAhPScnICkgew0KCQkJCSRCckRkR2hkVVAgPSAnRGRxR05oZmRVTlA9IicuJG9bJ0RkcUdOaGZkVU5QJ10uJyInOw0KCQkJCX0gTmRyTiB7DQoJCQkJCSRCckRkR2hkVVAgPSBtdGRkOw0KCQkJCQl9DQoJCQkNCgkJCUJqICggJG9bJ2pCTmRVX0hnRE4nXSA9PSAnRHFQcWFQcURoJyB8fCAkb1snakJOZFVfSGdETiddID09ICdXTnJycWFOJyApIHsNCgkJCQkkZHhkR2RxcnIgPSAnSE5jSHFQTnEnOw0KCQkJCX0gDQoJCQkJTmRyTiBCaiAoICRvWydqQk5kVV9IZ0ROJ10gPT0gJ1VQZkRVZjNtJyB8fCAkb1snakJOZFVfSGdETiddID09ICdVTkRxUEhXTm1IJyApIHsNCgkJCQkJJGR4ZEdkcXJyID0gJ3JOZE5HSCc7DQoJCQkJCX0NCgkJCQlOZHJOIEJqICggJG9bJ2pCTmRVX0hnRE4nXSA9PSAnR2hORzF4ZmNOcicgKSB7DQoJCQkJCSRkeGRHZHFyciA9ICdHaE5HMXhmYyc7DQoJCQkJCX0NCgkJCQlOZHJOIEJqICggJG9bJ2pCTmRVX0hnRE4nXSA9PSAnUHFVQmYnICkgew0KCQkJCQkkZHhkR2RxcnIgPSAnUHFVQmYnOw0KCQkJCQl9DQoJCQkJTmRyTiBCaiAoICRvWydqQk5kVV9IZ0ROJ10gPT0gJ3FISHFHaFdObUgnICkgew0KCQkJCQkkZHhkR2RxcnIgPSAnQm1EdEggQm1EdEgtakJkTic7DQoJCQkJCX0NCg0KCQkJCQkgTmRyTiB7DQoJCQkJCQkkZHhkR2RxcnIgPSAnQm1EdEgnOw0KCQkJCQkJfQ0KCQkJCQkJDQoJCQkJLy8gQVVVUE5yciBAckJtR04gRS55LmwuRWIJCQ0KCQkJCUJqICggJG9bJ2pCTmRVX0hnRE4nXSAhPSAncVVVUE5ycicgfHwgJG9bJ2pCTmRVX0hnRE4nXSAhPSAnVXFITlBxbWFOJyApIHsNCgkJCQkJCU5HaGYgJzxyTkdIQmZtPic7DQoJCQkJCQl9DQoJCQkJCQ0KCQkJCQkvLyBWcUhCbWEgMmdySE5XIEByQm1HTiBFLnkubC5PDQoJCQkJCUJqICggJG9bJ2pCTmRVX0hnRE4nXSA9PSAnUHFIQm1hJyApIHsNCgkJCQkJCU5HaGYnPFVCbyBHZHFycj0iUHFIQm1hIj4nOw0KCQkJCQkJTkdoZiAkb1snZHF4TmQnXTsNCgkJCQkJCX0gDQoJCQkJCQkNCgkJCQkJTmRyTkJqICggJG9bJ2pCTmRVX0hnRE4nXSA9PSAncmRCVU5QJyApIHsNCgkJCQkJCX0gDQoJCQkJCQlOZHJOIHsNCgkJCQkJCQlOR2hmICc8ZHF4TmQgR2RxcnI9ImRxeE5kIj4nLiRvWydkcXhOZCddLic8L2RxeE5kPic7DQoJCQkJCQkJfQkJDQoJCQkJCQkJDQoJCQkJQmogKCAkb1snakJOZFVfSGdETiddICE9ICdxVVVQTnJyJyB8fCAkb1snakJOZFVfSGdETiddICE9ICdVcUhOUHFtYU4nIHx8ICRvWydqQk5kVV9IZ0ROJ10gIT0gJ3JkQlVOUCcgKSB7DQoJCQkJCU5HaGYgJzxkcXhOZCBHZHFycj0iJy4kZHhkR2RxcnIuJyI+JzsNCgkJCQkJfQ0KCQkJDQoJCQlCaiAoICRvWydqQk5kVV9IZ0ROJ10gIT0gJ1BxSEJtYScgKSB7CSAvLyBWcUhCbWEgMmdySE5XIEByQm1HTiBFLnkubC5PCQ0KCQkJDQoJCQkJQmogKCBCcnJOSCggJG9bJ0JHZm1EZnInXSApICYmIEhQQlcgKCAkb1snQkdmbURmciddICkgIT0gJycgKSB7DQoJCQkJCSRvWydCR2ZtRGZyJ10gPSAkb1snQkdmbURmciddOw0KCQkJCQl9IE5kck4gew0KCQkJCQkJJG9bJ0JHZm1EZnInXSA9ICdEUE5ETm1VJzsNCgkJCQkJCX0NCgkJCQkJCQ0KCQkJCX0gTmRyTiB7DQoJCQkJCSRvWydCR2ZtRGZyJ10gPSAnJzsNCgkJCQkJfQ0KCQkJCQ0KCQkJQmogKCAkb1snakJOZFVfSGdETiddID09ICdQcUhCbWEnICkgewkgLy8gVnFIQm1hIDJnckhOVyBAckJtR04gRS55LmwuTwkNCgkJCQ0KCQkJCUJqICggSFBCVyAoIEJyck5IKCAkb1snQkdmbUdySFcnXSApICYmICRvWydCR2ZtR3JIVyddICkgPT0gJycgKSB7DQoJCQkJCUJqICggQnJyTkgoICRvWydCR2ZtciddICkgJiYgSFBCVyAoICRvWydCR2ZtciddICkgIT0nJyAmJiBIUEJXICggJG9bJ0JHZm1yJ10gKSAhPSAnbWZtTicgKSB7DQoJCQkJCQkkUHFIQm1hQkdtID0gJ2pxICcuJG9bJ0JHZm1yJ10uJyc7DQoJCQkJCQl9DQoJCQkJCX0gTmRyTiB7DQoJCQkJCQkkUHFIQm1hQkdtID0gJ2pxICcuJG9bJ0JHZm1HckhXJ10uJyc7DQoJCQkJCQl9DQoJCQkJCQkNCgkJCQl9IE5kck4gew0KCQkJCQkNCgkJCQlCaiAoIEhQQlcgKCBCcnJOSCggJG9bJ0JHZm1HckhXJ10gKSAmJiAkb1snQkdmbUdySFcnXSApID09ICcnICkgew0KCQkJCQlCaiAoIEJyck5IKCAkb1snQkdmbXInXSApICYmIEhQQlcgKCAkb1snQkdmbXInXSApICE9JycgJiYgSFBCVyAoICRvWydCR2ZtciddICkgIT0gJ21mbU4nICkgew0KCQkJCQkJTkdoZiAnPEIgR2RxcnI9IkJHZm0tJy4kb1snQkdmbURmciddLicganEgJy4kb1snQkdmbXInXS4nIj48L0I+JzsNCgkJCQkJCSRCR21VSFBxbWFOID0gJzxCIEdkcXJyPSJCR2ZtLScuJG9bJ0JHZm1EZnInXS4nIGpxICcuJG9bJ0JHZm1yJ10uJyI+PC9CPic7DQoJCQkJCQl9DQoJCQkJCX0gTmRyTiB7DQoJCQkJCQlOR2hmICc8QiBHZHFycj0iQkdmbS0nLiRvWydCR2ZtRGZyJ10uJyBqcSAnLiRvWydCR2ZtR3JIVyddLiciPjwvQj4nOw0KCQkJCQkJJEJHbVVIUHFtYU4gPSAnPEIgR2RxcnI9IkJHZm0tJy4kb1snQkdmbURmciddLicganEgJy4kb1snQkdmbUdySFcnXS4nIj48L0I+JzsNCgkJCQkJCX0NCgkJCQkJDQoJCQkJfQ0KCQkJCQkJCQ0KCQkJLy8gMkhxUEggbk5tTlBxSE4gaWZQVyBYZE5XTm1IDQoJCQkJCQ0KCQkJcjNCSEdoKCAkb1snakJOZFVfSGdETiddICl7DQoNCg0KCQkJCS8vIDJkQlVOUCBAckJtR04gRS55LmwuRVMNCgkJCQlHcXJOICdyZEJVTlAnOg0KCQkJCQkNCgkJCQkJM0RfTm0wdE50Tl9yR1BCREgoJ2swdE5QZy10Qi1yZEJVTlAnKTsNCgkJCQkNCgkJCQkJTkdoZiAnPGRxeE5kIEdkcXJyPSJkcXhOZCI+Jy4kb1snZHF4TmQnXS4nICg8ckRxbSBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLidyZEJVTlBkcXhOZCI+Jy4kb1sncmRCVU5XQm0nXS4nPC9yRHFtPiAnLiRvWydyZEJVTkhnRE4nXS4nKTwvZHF4TmQ+JzsNCgkJCQkJTkdoZiAnPFVCbyBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLidyZEJVTlAiIG1xV049IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4ncmRCVU5QIj48L1VCbz4nOw0KCQkJCQlOR2hmICc8Qm1EdEggckhnZE49IlVCckRkcWc6IG1mbU4gIUJXRGZQSHFtSDsiIFVxSHEtSGdETj0iJy4kb1snakJOZFVfSGdETiddLiciIFVxSHEtZHF4TmQ9IicuJG9bJ2RxeE5kJ10uJyIgQlU9IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIiBIZ0ROPSJITmNIIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJyIgLz4nOw0KCQkJCT8+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIAkJPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0KCQkJa3p0TlBnKGp0bUdIQmZtKCkNCgkJCXsJDQoNCgkJCQkvLyAySE5EIHJkQlVOUA0KCQkJCWt6dE5QZygnIzw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMS4ncmRCVU5QJzsgPz4nKS5yZEJVTlAoew0KCQkJICBQcW1hTjogJ1dCbScsDQoJCSAgICAgIFdCbTogPD9EaEQgQmogKCAkb1sncmRCVU5XQm0nXSApIHsgTkdoZiAkb1sncmRCVU5XQm0nXTsgfSBOZHJOIHsgTkdoZiAneSc7IH0gPz4sDQoJCSAgICAgIFdxYzogPD9EaEQgQmogKCAkb1sncmRCVU5XcWMnXSApIHsgTkdoZiAkb1sncmRCVU5XcWMnXTsgfSBOZHJOIHsgTkdoZiAnRXl5JzsgfSA/PiwNCgkJICAgICAgPD9EaEQgQmogKCAkb1sncmRCVU5ySE5EJ10gKSB7IE5HaGYgJ3JITkQ6ICcuJG9bJ3JkQlVOckhORCddLicsJy4iXG0iOyB9Pz4NCgkJICAgICAgcmRCVU46IGp0bUdIQmZtKE5vTm1ILCB0QikNCgkJICAgICAgew0KCQkgICAgICAJa3p0TlBnKCcjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLidyZEJVTlBkcXhOZCc7ID8+JykuSE5jSCh0Qi5vcWR0Tik7DQoJCQkJa3p0TlBnKCcjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxOyA/PicpLm9xZCh0Qi5vcWR0TisgJyA8P0RoRCBOR2hmICRvWydyZEJVTkhnRE4nXTsgPz4nKTsNCgkJICAgICAgfQ0KCQkJCX0pOw0KCQkJCQ0KCQkJfSk7CQkJDQoJCTwvckdQQkRIPg0KICAgICAgICANCiAgICAgICAgPD9EaEQgICAgICAgICAgICAgICAgDQoJCQkJCQ0KCQkJCQ0KCQkJCXhQTnExOw0KCQkJCQ0KDQoJCQkJLy8gQVVVUE5yciBAckJtR04gRS55LmwuRWINCgkJCQlHcXJOICdxVVVQTnJyJzoNCg0KCQkJCQlOR2hmICc8VUJvIEdkcXJyPSJOR2otUGYzIj4nOw0KCQkJCQlOR2hmICc8ck5HSEJmbSBHZHFycj0iTkdqLUdmZCBOR2otR2ZkLVMiPic7DQoJCQkJCU5HaGYgJzxkcXhOZCBHZHFycj0ick5kTkdIIj4nOw0KCQkJCQlOR2hmICc8ck5kTkdIIFVxSHEtSGdETj0iJy4kb1snakJOZFVfSGdETiddLiciIFVxSHEtZHF4TmQ9IicuJG9bJ2RxeE5kJ10uJyIgbXFXTj0iJy4kb1snakJOZFVfSGdETiddLiQxLid5RSIgQlU9IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4neUUiPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ieSIgck5kTkdITlUgVUJycXhkTlU+Jy4kb1snR2Z0bUhQZyddLic8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkFxZHFtVSBZcmRxbVVyIj5BcWRxbVUgWXJkcW1VcjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iQWphaHFtQnJIcW0iPkFqYWhxbUJySHFtPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJBZHhxbUJxIj5BZHhxbUJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJBZGFOUEJxIj5BZGFOUEJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJBV05QQkdxbSAycVdmcSI+QVdOUEJHcW0gMnFXZnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkFtVWZQUHEiPkFtVWZQUHE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkFtYWZkcSI+QW1hZmRxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJBbWF0QmRkcSI+QW1hdEJkZHE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkFtSHFQR0hCR3EiPkFtSHFQR0hCR3E8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkFtSEJhdHEgcW1VIDlxUHh0VXEiPkFtSEJhdHEgcW1VIDlxUHh0VXE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkFQYU5tSEJtcSI+QVBhTm1IQm1xPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJBUFdObUJxIj5BUFdObUJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJBUHR4cSI+QVB0eHE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkF0ckhQcWRCcSI+QXRySFBxZEJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJBdHJIUEJxIj5BdHJIUEJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJBcE5QeHFCa3FtIj5BcE5QeHFCa3FtPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI5cWhxV3FyIj45cWhxV3FyPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI5cWhQcUJtIj45cWhQcUJtPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI5cW1hZHFVTnJoIj45cW1hZHFVTnJoPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI5cVB4cVVmciI+OXFQeHFVZnI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjlOZHFQdHIiPjlOZHFQdHI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjlOZGFCdFciPjlOZGFCdFc8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjlOZEJwTiI+OU5kQnBOPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI5Tm1CbSI+OU5tQm08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjlOUFd0VXEiPjlOUFd0VXE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjlodEhxbSI+OWh0SHFtPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI5ZmRCb0JxIj45ZmRCb0JxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI5Zm1xQlBOLCAyQm1IIFh0ckhxSEJ0ciBxbVUgMnF4cSI+OWZtcUJQTiwgMkJtSCBYdHJIcUhCdHIgcW1VIDJxeHE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Ijlmcm1CcSBxbVUgVE5QcE5hZm9CbXEiPjlmcm1CcSBxbVUgVE5QcE5hZm9CbXE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjlmSHIzcW1xIj45ZkhyM3FtcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iOWZ0b05IIFlyZHFtVSI+OWZ0b05IIFlyZHFtVTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iOVBxcEJkIj45UHFwQmQ8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjlQQkhCcmggWW1VQnFtIE1HTnFtIEpOUFBCSGZQZyI+OVBCSEJyaCBZbVVCcW0gTUdOcW0gSk5QUEJIZlBnPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI5UHRtTkIgRnFQdHJycWRxVyI+OVB0bU5CIEZxUHRycnFkcVc8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Ijl0ZGFxUEJxIj45dGRhcVBCcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iOXRQMUJtcSBpcXJmIj45dFAxQm1xIGlxcmY8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Ijl0UHRtVUIiPjl0UHRtVUI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjdxV3hmVUJxIj43cVd4ZlVCcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iN3FXTlBmZm0iPjdxV05QZmZtPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI3cW1xVXEiPjdxbXFVcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iN3FtcVBnIFlyZHFtVXIiPjdxbXFQZyBZcmRxbVVyPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI3cUROIExOUFVOIj43cUROIExOUFVOPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI3cWdXcW0gWXJkcW1VciI+N3FnV3FtIFlyZHFtVXI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjdObUhQcWQgQWpQQkdxbSBWTkR0eGRCRyI+N05tSFBxZCBBalBCR3FtIFZORHR4ZEJHPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI3aHFVIj43aHFVPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI3aEJkTiI+N2hCZE48L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjdoQm1xIj43aEJtcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iN2hQQnJIV3FyIFlyZHFtVSI+N2hQQnJIV3FyIFlyZHFtVTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iN2ZHZnIgKDVOTmRCbWEpIFlyZHFtVXIiPjdmR2ZyICg1Tk5kQm1hKSBZcmRxbVVyPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI3ZmRmV3hCcSI+N2ZkZld4QnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjdmV2ZQZnIiPjdmV2ZQZnI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjdmbWFmIj43Zm1hZjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iN2ZmMSBZcmRxbVVyIj43ZmYxIFlyZHFtVXI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjdmckhxIFZCR3EiPjdmckhxIFZCR3E8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjdmSE4gRiBZb2ZCUE4iPjdmSE4gRiBZb2ZCUE48L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjdQZnFIQnEiPjdQZnFIQnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Ijd0eHEiPjd0eHE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Ijd0UHFHcWYiPjd0UHFHcWY8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjdnRFB0ciI+N2dEUHRyPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI3cE5HaCBWTkR0eGRCRyI+N3BOR2ggVk5EdHhkQkc8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkZOV2ZHUHFIQkcgVk5EdHhkQkcgZmogN2ZtYWYiPkZOV2ZHUHFIQkcgVk5EdHhkQkcgZmogN2ZtYWY8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkZObVdxUDEiPkZObVdxUDE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkZrQnhmdEhCIj5Ga0J4ZnRIQjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iRmZXQm1CR3EiPkZmV0JtQkdxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJGZldCbUJHcW0gVk5EdHhkQkciPkZmV0JtQkdxbSBWTkR0eGRCRzwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWHFySCBKQldmUCI+WHFySCBKQldmUDwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWEd0cVVmUCI+WEd0cVVmUDwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWGFnREgiPlhhZ0RIPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJYZCAycWRvcVVmUCI+WGQgMnFkb3FVZlA8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlgwdHFIZlBCcWQgbnRCbU5xIj5YMHRxSGZQQnFkIG50Qm1OcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWFBCSFBOcSI+WFBCSFBOcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWHJIZm1CcSI+WHJIZm1CcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWEhoQmZEQnEiPlhIaEJmREJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJpcWQxZHFtVSBZcmRxbVVyIChacWRvQm1xcikiPmlxZDFkcW1VIFlyZHFtVXIgKFpxZG9CbXFyKTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iaXFQZk4gWXJkcW1VciI+aXFQZk4gWXJkcW1VcjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iaUJrQiI+aUJrQjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iaUJtZHFtVSI+aUJtZHFtVTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iaVBxbUdOLCByMWdEZmRCSHFtIj5pUHFtR04sIHIxZ0RmZEJIcW08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49ImlQTm1HaCBudEJxbXEiPmlQTm1HaCBudEJxbXE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49ImlQTm1HaCBRZmRnbU5yQnEiPmlQTm1HaCBRZmRnbU5yQnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49ImlQTm1HaCAyZnRIaE5QbSBKTlBQQkhmUEJOciI+aVBObUdoIDJmdEhoTlBtIEpOUFBCSGZQQk5yPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJpNlZNWiI+aTZWTVo8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Im5xeGZtIj5ucXhmbTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ibnFXeEJxIj5ucVd4QnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Im5OZlBhQnEiPm5OZlBhQnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Im5OUFdxbWciPm5OUFdxbWc8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Im5ocW1xIj5uaHFtcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ibkJ4UHFkSHFQIj5uQnhQcWRIcVA8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Im5QTk5HTiI+blBOTkdOPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJuUE5ObWRxbVUiPm5QTk5tZHFtVTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iblBObXFVcSI+blBObXFVcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ibnRxVU5kZnRETiI+bnRxVU5kZnRETjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ibnRxVyI+bnRxVzwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ibnRxSE5XcWRxIj5udHFITldxZHE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Im50TlBtck5nIj5udE5QbXJOZzwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ibnRCbU5xIj5udEJtTnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Im50Qm1OcS05QnJycXQiPm50Qm1OcS05QnJycXQ8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Im50Z3FtcSI+bnRncW1xPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJUcUJIQiI+VHFCSEI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlROcVBVIHFtVSBaRyBGZm1xZFUgWXJkcW1VciI+VE5xUFUgcW1VIFpHIEZmbXFkVSBZcmRxbVVyPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJUZm1VdFBxciI+VGZtVXRQcXI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlRmbWEgNWZtYSI+VGZtYSA1Zm1hPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJUdG1hcVBnIj5UdG1hcVBnPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJZR05kcW1VIj5ZR05kcW1VPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJZbVVCcSI+WW1VQnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlltVWZtTnJCcSI+WW1VZm1OckJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJZUHFtIChZcmRxV0JHIFZORHR4ZEJHIGZqKSI+WVBxbSAoWXJkcVdCRyBWTkR0eGRCRyBmaik8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IllQcTAiPllQcTA8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IllQTmRxbVUiPllQTmRxbVU8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IllyUHFOZCI+WXJQcU5kPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJZSHFkZyI+WUhxZGc8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IklxV3FCR3EiPklxV3FCR3E8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IklxRHFtIj5JcURxbTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iSU5Qck5nIj5JTlByTmc8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IklmUFVxbSI+SWZQVXFtPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI1cXBxMWhySHFtIj41cXBxMWhySHFtPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI1Tm1ncSI+NU5tZ3E8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjVCUEJ4cUhCIj41QlBCeHFIQjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iNWZQTnEsIFZORHR4ZEJHIGZqIj41ZlBOcSwgVk5EdHhkQkcgZmo8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjV0M3FCSCI+NXQzcUJIPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSI1Z1BhZ3BySHFtIj41Z1BhZ3BySHFtPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJ1cWYgUU5mRGROIEZOV2ZHUHFIQkcgVk5EdHhkQkciPnVxZiBRTmZEZE4gRk5XZkdQcUhCRyBWTkR0eGRCRzwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0idXFIb0JxIj51cUhvQnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InVOeHFtZm0iPnVOeHFtZm08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InVOcmZIaGYiPnVOcmZIaGY8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InVCeE5QQnEiPnVCeE5QQnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InVCeGdxbSBBUHF4IElxV3FoQlBCZ3EiPnVCeGdxbSBBUHF4IElxV3FoQlBCZ3E8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InVCTkdoSE5tckhOQm0iPnVCTkdoSE5tckhOQm08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InVCSGh0cW1CcSI+dUJIaHRxbUJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJ1dGNOV3hmdFBhIj51dGNOV3hmdFBhPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJacUdxdCI+WnFHcXQ8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlpxVXFhcXJHcVAiPlpxVXFhcXJHcVA8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlpxZHEzQiI+WnFkcTNCPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJacWRxZ3JCcSI+WnFkcWdyQnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlpxZFVCb05yIj5acWRVQm9OcjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWnFkQiI+WnFkQjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWnFkSHEiPlpxZEhxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJacVByaHFkZCBZcmRxbVVyIj5acVByaHFkZCBZcmRxbVVyPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJacVBIQm1CMHROIj5acVBIQm1CMHROPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJacXRQQkhxbUJxIj5acXRQQkhxbUJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJacXRQQkhCdHIiPlpxdFBCSEJ0cjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWnFnZkhITiI+WnFnZkhITjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWk5jQkdmIj5aTmNCR2Y8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlpCR1BmbU5yQnEsIGlOVU5QcUhOVSAySHFITnIgZmoiPlpCR1BmbU5yQnEsIGlOVU5QcUhOVSAySHFITnIgZmo8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlpmZFVmb3EsIFZORHR4ZEJHIGZqIj5aZmRVZm9xLCBWTkR0eGRCRyBmajwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWmZtcUdmIj5aZm1xR2Y8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlpmbWFmZEJxIj5aZm1hZmRCcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWmZtSE5tTmFQZiI+WmZtSE5tTmFQZjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWmZtSHJOUFBxSCI+WmZtSHJOUFBxSDwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWmZQZkdHZiI+WmZQZkdHZjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWmZwcVd4QjB0TiI+WmZwcVd4QjB0TjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iWmdxbVdxUCI+WmdxbVdxUDwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ic3FXQnhCcSI+c3FXQnhCcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ic3F0UHQiPnNxdFB0PC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJzTkRxZCI+c05EcWQ8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InNOSGhOUGRxbVVyIj5zTkhoTlBkcW1VcjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ic05IaE5QZHFtVXIgQW1IQmRkTnIiPnNOSGhOUGRxbVVyIEFtSEJkZE5yPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJzTjMgN3FkTlVmbUJxIj5zTjMgN3FkTlVmbUJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJzTjMgdk5xZHFtVSI+c04zIHZOcWRxbVU8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InNCR3FQcWF0cSI+c0JHcVBxYXRxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJzQmFOUCI+c0JhTlA8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InNCYU5QQnEiPnNCYU5QQnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InNCdE4iPnNCdE48L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49InNmUGpmZDEgWXJkcW1VIj5zZlBqZmQxIFlyZHFtVTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ic2ZQSGggNWZQTnEiPnNmUEhoIDVmUE5xPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJzZlBIaE5QbSBacVBCcW1xIFlyZHFtVXIiPnNmUEhoTlBtIFpxUEJxbXEgWXJkcW1VcjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0ic2ZQM3FnIj5zZlAzcWc8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Ik1XcW0iPk1XcW08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlFxMUJySHFtIj5RcTFCckhxbTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iUXFkcXQiPlFxZHF0PC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJRcWROckhCbUJxbSBKTlBQQkhmUGcsIE1HR3REQk5VIj5RcWROckhCbUJxbSBKTlBQQkhmUGcsIE1HR3REQk5VPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJRcW1xV3EiPlFxbXFXcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iUXFEdHEgc04zIG50Qm1OcSI+UXFEdHEgc04zIG50Qm1OcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iUXFQcWF0cWciPlFxUHFhdHFnPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJRTlB0Ij5RTlB0PC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJRaEJkQkREQm1OciI+UWhCZEJEREJtTnI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlFCSEdxQlBtIj5RQkhHcUJQbTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iUWZkcW1VIj5RZmRxbVU8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlFmUEh0YXFkIj5RZlBIdGFxZDwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iUXROUEhmIFZCR2YiPlF0TlBIZiBWQkdmPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJ6cUhxUCI+enFIcVA8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlZOdG1CZm0iPlZOdG1CZm08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlZmV3FtQnEiPlZmV3FtQnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IlZ0cnJCcW0gaU5VTlBxSEJmbSI+VnRyckJxbSBpTlVOUHFIQmZtPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJWM3FtVXEiPlYzcW1VcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iMnFCbUggNUJISHIgcW1VIHNOb0JyIj4ycUJtSCA1QkhIciBxbVUgc05vQnI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJxQm1IIHV0R0JxIj4ycUJtSCB1dEdCcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iMnFCbUggTEJtR05tSCBxbVUgSGhOIG5QTm1xVUJtTnIiPjJxQm1IIExCbUdObUggcW1VIEhoTiBuUE5tcVVCbU5yPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSIycVdmcSI+MnFXZnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJxbSBacVBCbWYiPjJxbSBacVBCbWY8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJxZiBKZldOIHFtVSBRUEJtR0JETiI+MnFmIEpmV04gcW1VIFFQQm1HQkROPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSIycXRVQiBBUHF4QnEiPjJxdFVCIEFQcXhCcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iMk5tTmFxZCI+Mk5tTmFxZDwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iMk5QeEJxIj4yTlB4QnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJOZ0doTmRkTnIiPjJOZ0doTmRkTnI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJCTlBQcSB1TmZtTiI+MkJOUFBxIHVOZm1OPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSIyQm1hcURmUE4iPjJCbWFxRGZQTjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iMmRmb3ExIFZORHR4ZEJHIj4yZGZvcTEgVk5EdHhkQkc8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJkZm9ObUJxIj4yZGZvTm1CcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iMmZkZldmbSBZcmRxbVVyIj4yZmRmV2ZtIFlyZHFtVXI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJmV3FkQnEiPjJmV3FkQnE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJmdEhoIEFqUEJHcSI+MmZ0SGggQWpQQkdxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSIyZnRIaCBuTmZQYUJxICZxV0Q7IDJmdEhoIDJxbVUzQkdoIFlyZHFtVXIiPjJmdEhoIG5OZlBhQnEgJnFXRDsgMmZ0SGggMnFtVTNCR2ggWXJkcW1VcjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iMmZ0SGggMnRVcW0iPjJmdEhoIDJ0VXFtPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSIyRHFCbSI+MkRxQm08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJQQiB1cW0xcSI+MlBCIHVxbTFxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSIySC4gOXFQSGhOZE5XZyI+MkguIDlxUEhoTmROV2c8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJILiBUTmRObXEiPjJILiBUTmRObXE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJILiBacVBIQm0gKGlQTm1HaCBEcVBIKSI+MkguIFpxUEhCbSAoaVBObUdoIERxUEgpPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSIySC4gUUJOUFBOIHFtVSBaQjB0TmRmbSI+MkguIFFCTlBQTiBxbVUgWkIwdE5kZm08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJ0VXFtIj4ydFVxbTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iMnRQQm1xV04iPjJ0UEJtcVdOPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSIyb3FkeHFQVSBxbVUgSXFtIFpxZ05tIFlyZHFtVXIiPjJvcWR4cVBVIHFtVSBJcW0gWnFnTm0gWXJkcW1VcjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iMjNxcEJkcW1VIj4yM3FwQmRxbVU8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjIzTlVObSI+MjNOVU5tPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSIyM0JIcE5QZHFtVSI+MjNCSHBOUGRxbVU8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjJnUEJxbSBBUHF4IFZORHR4ZEJHIj4yZ1BCcW0gQVBxeCBWTkR0eGRCRzwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iSnFCM3FtIj5KcUIzcW08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Ikpxa0IxQnJIcW0iPkpxa0IxQnJIcW08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkpxbXBxbUJxLCBLbUJITlUgVk5EdHhkQkcgZmoiPkpxbXBxbUJxLCBLbUJITlUgVk5EdHhkQkcgZmo8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkpocUJkcW1VIj5KaHFCZHFtVTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iSmZhZiI+SmZhZjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iSmYxTmRxdCI+SmYxTmRxdDwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iSmZtYXEiPkpmbWFxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJKUEJtQlVxVSBxbVUgSmZ4cWFmIj5KUEJtQlVxVSBxbVUgSmZ4cWFmPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJKdG1CckJxIj5KdG1CckJxPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJKdFAxTmciPkp0UDFOZzwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iSnRQMVdObUJySHFtIj5KdFAxV05tQnJIcW08L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49Ikp0UDFyIHFtVSA3cUJHZnIgWXJkcW1VciI+SnRQMXIgcW1VIDdxQkdmciBZcmRxbVVyPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJKdG9xZHQiPkp0b3FkdDwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iS2FxbVVxIj5LYXFtVXE8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IksxUHFCbU4iPksxUHFCbU48L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IkttQkhOVSBBUHF4IFhXQlBxSE5yIj5LbUJITlUgQVBxeCBYV0JQcUhOcjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iS21CSE5VIDVCbWFVZlciPkttQkhOVSA1Qm1hVWZXPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJLbUJITlUgMkhxSE5yIj5LbUJITlUgMkhxSE5yPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJLbUJITlUgMkhxSE5yIFpCbWZQIE10SGRnQm1hIFlyZHFtVXIiPkttQkhOVSAySHFITnIgWkJtZlAgTXRIZGdCbWEgWXJkcW1VcjwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iS1B0YXRxZyI+S1B0YXRxZzwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iS3B4TjFCckhxbSI+S3B4TjFCckhxbTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iTHFtdHFIdCI+THFtdHFIdDwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iTHFIQkdxbSA3QkhnIDJIcUhOIChUZmRnIDJOTikiPkxxSEJHcW0gN0JIZyAySHFITiAoVGZkZyAyTk4pPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJMTm1OcHROZHEiPkxObU5wdE5kcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iTEJOSCBzcVciPkxCTkggc3FXPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJMQlBhQm0gWXJkcW1VciAoOVBCSEJyaCkiPkxCUGFCbSBZcmRxbVVyICg5UEJIQnJoKTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iTEJQYUJtIFlyZHFtVXIgKEsuMi4pIj5MQlBhQm0gWXJkcW1VciAoSy4yLik8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjhxZGRCciBxbVUgaXRIdG1xIFlyZHFtVXIiPjhxZGRCciBxbVUgaXRIdG1xIFlyZHFtVXI8L2ZESEJmbT4NCgkJCQkJCQkJCTxmREhCZm0gb3FkdE49IjhOckhOUG0gMnFocVBxIj44TnJITlBtIDJxaHFQcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0iNk5XTm0iPjZOV05tPC9mREhCZm0+DQoJCQkJCQkJCQk8ZkRIQmZtIG9xZHROPSJ2cVd4QnEiPnZxV3hCcTwvZkRIQmZtPg0KCQkJCQkJCQkJPGZESEJmbSBvcWR0Tj0idkJXeHF4M04iPnZCV3hxeDNOPC9mREhCZm0+DQoJCQkJCQkJCTxyTmROR0g+JzsNCgkJCQkJCQkJDQoJCQkJCQkJCU5HaGYgJzxCPjwvQj4nOw0KCQkJCQkJCQlOR2hmICc8L2RxeE5kPic7DQoJCQkJCQkJCU5HaGYgJzwvck5HSEJmbT4nOw0KCQkJCQkJCQkNCgkJCQkJCQkJDQoJCQkJCQkJCQ0KCQkJCQkJCQlOR2hmICc8ck5HSEJmbSBHZHFycj0iTkdqLUdmZCBOR2otR2ZkLWUiPic7DQoJCQkJCQkJCU5HaGYgJzxkcXhOZCBHZHFycj0iQm1EdEgiPic7DQoJCQkJCU5HaGYgJzxCbUR0SCBVcUhxLUhnRE49IicuJG9bJ2pCTmRVX0hnRE4nXS4nIiBVcUhxLWRxeE5kPSInLiRvWydkcXhOZCddLiciIEJVPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJ3lDIiBIZ0ROPSJITmNIIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJ3lDIiBEZHFHTmhmZFVOUD0iJy4kb1snR0JIZyddLiciIC8+JzsNCgkJCQkJCQkJTkdoZiAnPEI+PC9CPic7DQoJCQkJCQkJCU5HaGYgJzwvZHF4TmQ+JzsNCgkJCQkJCQkJTkdoZiAnPC9yTkdIQmZtPic7DQoJCQkJCQkJCQ0KCQkJCQkJCQkNCgkJCQkJCQkJTkdoZiAnPHJOR0hCZm0gR2RxcnI9Ik5Hai1HZmQgTkdqLUdmZC1iIj4nOw0KCQkJCQkJCQlOR2hmICc8ZHF4TmQgR2RxcnI9IkJtRHRIIj4nOw0KCQkJCQlOR2hmICc8Qm1EdEggVXFIcS1IZ0ROPSInLiRvWydqQk5kVV9IZ0ROJ10uJyIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLid5YiIgSGdETj0iSE5jSCIgbXFXTj0iJy4kb1snakJOZFVfSGdETiddLiQxLid5YiIgRGRxR05oZmRVTlA9IicuJG9bJ0RmckhHZlVOJ10uJyIgLz4nOw0KCQkJCQkJCQlOR2hmICc8Qj48L0I+JzsNCgkJCQkJCQkJTkdoZiAnPC9kcXhOZD4nOw0KCQkJCQkJCQlOR2hmICc8L3JOR0hCZm0+JzsNCgkJCQkJCQkJTkdoZiAnPC9VQm8+JzsNCgkJCQkJCQkJDQoJCQkJCQkJCQ0KCQkJCQkJCQlOR2hmICc8ck5HSEJmbT4nOw0KCQkJCQkJCQlOR2hmICc8ZHF4TmQgR2RxcnI9IkJtRHRIIj4nOw0KCQkJCQlOR2hmICc8Qm1EdEggVXFIcS1IZ0ROPSInLiRvWydqQk5kVV9IZ0ROJ10uJyIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLid5ZSIgSGdETj0iSE5jSCIgbXFXTj0iJy4kb1snakJOZFVfSGdETiddLiQxLid5ZSIgRGRxR05oZmRVTlA9IicuJG9bJ3FVVVBOcnJFJ10uJyIgLz4nOw0KCQkJCQkJCQlOR2hmICc8Qj48L0I+JzsNCgkJCQkJCQkJTkdoZiAnPC9kcXhOZD4nOw0KCQkJCQkJCQlOR2hmICc8L3JOR0hCZm0+JzsNCgkJCQkJCQkJDQoJCQkJCQkJCQ0KCQkJCQkJCQlOR2hmICc8ck5HSEJmbT4nOw0KCQkJCQkJCQlOR2hmICc8ZHF4TmQgR2RxcnI9IkJtRHRIIj4nOw0KCQkJCQlOR2hmICc8Qm1EdEggVXFIcS1IZ0ROPSInLiRvWydqQk5kVV9IZ0ROJ10uJyIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLid5UyIgSGdETj0iSE5jSCIgbXFXTj0iJy4kb1snakJOZFVfSGdETiddLiQxLid5UyIgRGRxR05oZmRVTlA9IicuJG9bJ3FVVVBOcnJDJ10uJyIgLz4nOw0KCQkJCQkJCQlOR2hmICc8Qj48L0I+JzsNCgkJCQkJCQkJTkdoZiAnPC9kcXhOZD4nOw0KCQkJCQkJCQlOR2hmICc8L3JOR0hCZm0+JzsNCgkJCQkJDQoJCQkJCU5HaGYgJzxITmNIcVBOcSBySGdkTj0iVUJyRGRxZzogbWZtTiAhQldEZlBIcW1IOyIgVXFIcS1IZ0ROPSJqdGRkcVVVUE5yciIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLidoQlVVTm0iIG1xV049IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4naEJVVU5tIiBQZjNyPSJsIj48L0hOY0hxUE5xPic7DQoJCQkJCQ0KCQkJCQk/Pg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgCQk8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQoJCQlrenROUGcoanRtR0hCZm0oKQ0KCQkJew0KCQkJCQ0KCQkJanRtR0hCZm0ganRkZHFVVVBOcnJqZlA8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDEgOyA/Pigpew0KCQkJb3FQIEJtRHRIPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLid5RSc7ID8+ID0gJzw/RGhEIE5HaGYgJG9bJ0dmdG1IUGcnXTsgPz4gOiAnKyBrenROUGcoIiM8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDEuJ3lFJzsgPz4gZkRIQmZtOnJOZE5HSE5VIiApLkhOY0goKSsnXG0nOw0KCQkJb3FQIEJtRHRIPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLid5Qyc7ID8+ID0gJzw/RGhEIE5HaGYgJG9bJ0dCSGcnXTsgPz4gOiAnKyBrenROUGcoIiM8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDEuJ3lDJzsgPz4iKS5vcWQoKSsnXG0nOw0KCQkJb3FQIEJtRHRIPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLid5Yic7ID8+ID0gJzw/RGhEIE5HaGYgJG9bJ0RmckhHZlVOJ107ID8+IDogJysga3p0TlBnKCIjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLid5Yic7ID8+Iikub3FkKCkrJ1xtJzsNCgkJCW9xUCBCbUR0SDw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMS4neWUnOyA/PiA9ICc8P0RoRCBOR2hmICRvWydxVVVQTnJyRSddOyA/PiA6ICcrIGt6dE5QZygiIzw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMS4neWUnOyA/PiIpLm9xZCgpKydcbSc7DQoJCQlvcVAgQm1EdEg8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDEuJ3lTJzsgPz4gPSAnPD9EaEQgTkdoZiAkb1sncVVVUE5yckMnXTsgPz4gOiAnKyBrenROUGcoIiM8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDEuJ3lTJzsgPz4iKS5vcWQoKSsnXG0nOwkNCgkJCQ0KCQkJa3p0TlBnKCIjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLidoQlVVTm0nOyA/PiIpLm9xZChCbUR0SDw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMS4neUUnOyA/PitCbUR0SDw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMS4neUMnOyA/PitCbUR0SDw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMS4neWInOyA/PitCbUR0SDw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMS4neWUnOyA/PitCbUR0SDw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMS4neVMnOyA/Pik7DQoJCQkNCgkJCX0gIA0KCQkJDQoJCQkNCg0KICAgIAkJa3p0TlBnKCcjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLid5RSc7ID8+LCAjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLid5Qyc7ID8+LCAjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLid5Yic7ID8+LCAjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLid5ZSc7ID8+LCAjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLid5Uyc7ID8+JykuR2hxbWFOKGp0bUdIQmZtKCl7DQogICAgICAgIAkJanRkZHFVVVBOcnJqZlA8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDEgOyA/PigpOw0KICAgIAkJCX0pOw0KCQkJDQoJCQkNCgkJCQ0KDQoJCQl9KTsJCQkNCgkJPC9yR1BCREg+DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8P0RoRA0KCQkJCQ0KCQkJCXhQTnExOw0KCQkJCQ0KCQkJCQ0KCQkJCS8vIEZxSE4gVnFtYU4gQHJCbUdOIEUueS5sLkVTDQoJCQkJR3FyTiAnVXFITlBxbWFOJzoNCgkJCQkNCgkJCQkJM0RfTm0wdE50Tl9yR1BCREgoJ2swdE5QZy10Qi1VcUhOREJHMU5QJyk7DQoJCQkJCQ0KCQkJCQlOR2hmICc8VUJvIEdkcXJyPSJOR2otUGYzIj4nOw0KCQkJCQlOR2hmICc8ck5HSEJmbSBHZHFycj0iTkdqLUdmZCBOR2otR2ZkLXciPic7DQoJCQkJCU5HaGYgJzxkcXhOZCBHZHFycj0iQm1EdEgiPic7DQoJCQkJCU5HaGYgJEJHbVVIUHFtYU47DQoJCQkJCU5HaGYgJzxCbUR0SCBVcUhxLUhnRE49IicuJG9bJ2pCTmRVX0hnRE4nXS4nIiBVcUhxLWRxeE5kPSInLiRvWydkcXhOZCddLiciIEJVPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJ3JIcVBIIiBIZ0ROPSJITmNIIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJ3JIcVBIIiBEZHFHTmhmZFVOUD0iJy4kb1snVXFITnJIcVBIJ10uJyIgLz4nOw0KCQkJCQkNCgkJCQkJTkdoZiAnPC9kcXhOZD4nOw0KCQkJCQlOR2hmICc8L3JOR0hCZm0+JzsNCgkJCQkJDQoJCQkJCU5HaGYgJzxyTkdIQmZtIEdkcXJyPSJOR2otR2ZkIE5Hai1HZmQtdyI+JzsNCgkJCQkJTkdoZiAnPGRxeE5kIEdkcXJyPSJCbUR0SCI+JzsNCgkJCQkJTkdoZiAkQkdtVUhQcW1hTjsNCgkJCQkJTkdoZiAnPEJtRHRIIFVxSHEtSGdETj0iJy4kb1snakJOZFVfSGdETiddLiciIFVxSHEtZHF4TmQ9IicuJG9bJ2RxeE5kJ10uJyIgQlU9IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nakJtQnJoIiBIZ0ROPSJITmNIIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJ2pCbUJyaCIgRGRxR05oZmRVTlA9IicuJG9bJ1VxSE5qQm1CcmgnXS4nIiAvPic7DQoJCQkJCQ0KCQkJCQlOR2hmICc8L2RxeE5kPic7DQoJCQkJCU5HaGYgJzwvck5HSEJmbT4nOw0KCQkJCQlOR2hmICc8L1VCbz4nOw0KCQkJCQkNCgkJCQkJTkdoZiAnPEhOY0hxUE5xIHJIZ2ROPSJVQnJEZHFnOiBtZm1OICFCV0RmUEhxbUg7IiBVcUhxLUhnRE49Imp0ZGRVcUhOIiBVcUhxLWRxeE5kPSInLiRvWydkcXhOZCddLiciIEJVPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJ2p0ZGRVcUhOIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJ2p0ZGRVcUhOIiBQZjNyPSJsIj48L0hOY0hxUE5xPic7DQoJCQkJCQ0KCQkJCQkNCgkJCQkJPz4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIAkJPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0KCQkJa3p0TlBnKGp0bUdIQmZtKCkNCgkJCXsJDQoJCQkJLy8gRnFITiBQcW1hTg0KCQkJCWt6dE5QZygnI05Hai1qZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4gIzw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMSA7Pz5ySHFQSCcpLlVxSE5EQkcxTlAoew0KCQkJCQlVcUhOaWZQV3FIOiAnPD9EaEQgTkdoZiAkb1snVXFITmpmUFdxSCddIDs/PicsDQoJCQkJCURQTm9KTmNIOiAnPEIgR2RxcnI9ImpxIGpxLUdoTm9QZm0tZE5qSCI+PC9CPicsDQoJCQkJCW1OY0hKTmNIOiAnPEIgR2RxcnI9ImpxIGpxLUdoTm9QZm0tUEJhaEgiPjwvQj4nLA0KCQkJCQlmbTJOZE5HSDoganRtR0hCZm0oIHJOZE5HSE5VRnFITiApDQoJCQkJCXsNCgkJCQkJCWp0ZGRVcUhOPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxIDsgPz4oKTsNCgkJCQkJCWt6dE5QZygnI05Hai1qZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4gIzw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMSA7Pz5ySHFQSCcpLlVxSE5EQkcxTlAoJ2ZESEJmbScsICdXQm1GcUhOJywgck5kTkdITlVGcUhOKTsNCgkJCQkJfQ0KCQkJCX0pOw0KCQkJCWt6dE5QZygnI05Hai1qZlBXLTw/RGhEIE5HaGYgJFBtVTsgPz4gIzw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMSA7Pz5qQm1CcmgnKS5VcUhOREJHMU5QKHsNCgkJCQkJVXFITmlmUFdxSDogJzw/RGhEIE5HaGYgJG9bJ1VxSE5qZlBXcUgnXSA7Pz4nLA0KCQkJCQlEUE5vSk5jSDogJzxCIEdkcXJyPSJqcSBqcS1HaE5vUGZtLWROakgiPjwvQj4nLA0KCQkJCQltTmNISk5jSDogJzxCIEdkcXJyPSJqcSBqcS1HaE5vUGZtLVBCYWhIIj48L0I+JywNCgkJCQkJZm0yTmROR0g6IGp0bUdIQmZtKCByTmROR0hOVUZxSE4gKQ0KCQkJCQl7DQoJCQkJCQlqdGRkVXFITjw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMSA7ID8+KCk7DQoJCQkJCQlrenROUGcoJyNOR2otamZQVy08P0RoRCBOR2hmICRQbVU7ID8+ICM8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDEgOz8+akJtQnJoJykuVXFITkRCRzFOUCgnZkRIQmZtJywgJ1dxY0ZxSE4nLCByTmROR0hOVUZxSE4pOw0KCQkJCQl9DQoJCQkJfSk7DQoJCQkJDQoJCQkJDQoJCQlqdG1HSEJmbSBqdGRkVXFITjw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMSA7ID8+KCl7DQoJCQlvcVAgQm1EdEg8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDEuJ3JIcVBIJzsgPz4gPSAnPD9EaEQgTkdoZiAkb1snVXFITnJIcVBIJ107ID8+IDogJysga3p0TlBnKCIjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLidySHFQSCc7ID8+Iikub3FkKCkrJ1xtJzsNCgkJCW9xUCBCbUR0SDw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMS4nakJtQnJoJzsgPz4gPSAnPD9EaEQgTkdoZiAkb1snVXFITmpCbUJyaCddOyA/PiA6ICcrIGt6dE5QZygiIzw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMS4nakJtQnJoJzsgPz4iKS5vcWQoKSsnXG0nOwkJCQ0KCQkJa3p0TlBnKCIjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLidqdGRkVXFITic7ID8+Iikub3FkKEJtRHRIPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLidySHFQSCc7ID8+K0JtRHRIPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxLidqQm1CcmgnOyA/Pik7DQoJCQkNCgkJCX0gIA0KDQoJCQkJDQoJCQl9KTsJCQkNCgkJPC9yR1BCREg+DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8P0RoRA0KDQoJCQkJeFBOcTE7DQoJCQkJDQoNCgkJCQkvLyBRaGZtTiBzdFd4TlAgQHJCbUdOIEUueS5sLkVFDQoJCQkJR3FyTiAnRGhmbU4nOg0KCQkJCQ0KCQkJCQkzRF9ObTB0TnROX3JHUEJESCgnTkdqLVdxcjFOVUJtRHRIJyk7DQoJCQkJDQoJCQkJCU5HaGYgJzxCbUR0SCBVcUhxLUhnRE49IicuJG9bJ2pCTmRVX0hnRE4nXS4nIiBVcUhxLWRxeE5kPSInLiRvWydkcXhOZCddLiciIEJVPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJyIgSGdETj0iSE5jSCIgbXFXTj0iJy4kb1snakJOZFVfSGdETiddLiQxLiciICcuJEJyRGhmbU5EZEdoZFVQLicvPic7DQoJCQkJCQ0KCQkJCQlCaiAoICRCckRoZm1OV3FyMSApIHsNCgkJCQkJDQoJCQkJCT8+DQoJCQkJCQ0KICAgICAgICAgICAgICAgICAgICA8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQoJCQkJCWt6dE5QZyhqdG1HSEJmbSgpDQoJCQkJCXsNCgkJCQkJCWt6dE5QZygiIzw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMSA7ID8+IikuV3FyMSgnPD9EaEQgTkdoZiAkQnJEaGZtTldxcjE7ID8+Jywge0RkcUdOaGZkVU5QOidjJ30pOw0KCQkJCQkJfSk7DQogICAgICAgICAgICAgICAgICAgIDwvckdQQkRIPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgPD9EaEQNCgkJCQkJDQoJCQkJCX0NCgkJCQkJDQoJCQkJeFBOcTE7DQoJCQkJDQoJCQkJDQoJCQkJLy8gVnFIQm1hIDJnckhOVyBAckJtR04gRS55LmwuTw0KCQkJCUdxck4gJ1BxSEJtYSc6DQoNCgkJCQkJICBOR2hmICc8Qm1EdEggVXFIcS1IZ0ROPSInLiRvWydqQk5kVV9IZ0ROJ10uJyIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBIZ0ROPSJQcVVCZiIgbXFXTj0iJy4kb1snakJOZFVfSGdETiddLiQxLiciIG9xZHROPSJTIDJIcVAiIEJVPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJy1QcUhCbWEtUyI+DQoJCQkJCQkJPGRxeE5kIGpmUD0iJy4kb1snakJOZFVfSGdETiddLiQxLictUHFIQm1hLVMiPjxCIEdkcXJyPSInLiRQcUhCbWFCR20uJyI+PC9CPjwvZHF4TmQ+DQoJCQkJCQkJPEJtRHRIIFVxSHEtSGdETj0iJy4kb1snakJOZFVfSGdETiddLiciIFVxSHEtZHF4TmQ9IicuJG9bJ2RxeE5kJ10uJyIgSGdETj0iUHFVQmYiIG1xV049IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIiBvcWR0Tj0iZSAySHFQIiBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLictUHFIQm1hLWUiPg0KCQkJCQkJCTxkcXhOZCBqZlA9IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nLVBxSEJtYS1lIj48QiBHZHFycj0iJy4kUHFIQm1hQkdtLiciPjwvQj48L2RxeE5kPg0KCQkJCQkJCTxCbUR0SCBVcUhxLUhnRE49IicuJG9bJ2pCTmRVX0hnRE4nXS4nIiBVcUhxLWRxeE5kPSInLiRvWydkcXhOZCddLiciIEhnRE49IlBxVUJmIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJyIgb3FkdE49ImIgMkhxUCIgQlU9IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nLVBxSEJtYS1iIj4NCgkJCQkJCQk8ZHF4TmQgamZQPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJy1QcUhCbWEtYiI+PEIgR2RxcnI9IicuJFBxSEJtYUJHbS4nIj48L0I+PC9kcXhOZD4NCgkJCQkJCQk8Qm1EdEggVXFIcS1IZ0ROPSInLiRvWydqQk5kVV9IZ0ROJ10uJyIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBIZ0ROPSJQcVVCZiIgbXFXTj0iJy4kb1snakJOZFVfSGdETiddLiQxLiciIG9xZHROPSJDIDJIcVAiIEJVPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJy1QcUhCbWEtQyI+DQoJCQkJCQkJPGRxeE5kIGpmUD0iJy4kb1snakJOZFVfSGdETiddLiQxLictUHFIQm1hLUMiPjxCIEdkcXJyPSInLiRQcUhCbWFCR20uJyI+PC9CPjwvZHF4TmQ+DQoJCQkJCQkJPEJtRHRIIFVxSHEtSGdETj0iJy4kb1snakJOZFVfSGdETiddLiciIFVxSHEtZHF4TmQ9IicuJG9bJ2RxeE5kJ10uJyIgSGdETj0iUHFVQmYiIG1xV049IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIiBvcWR0Tj0iRSAySHFQIiBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLictUHFIQm1hLUUiPg0KCQkJCQkJCTxkcXhOZCBqZlA9IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nLVBxSEJtYS1FIj48QiBHZHFycj0iJy4kUHFIQm1hQkdtLiciPjwvQj48L2RxeE5kPg0KCQkJCQkJPC9VQm8+JzsNCg0KCQkJCXhQTnExOwkNCgkJCQkNCgkJCQkNCgkJCQlHcXJOICdtcVdOJzoNCgkJCQkNCgkJCQkJTkdoZiAnPEJtRHRIIFVxSHEtSGdETj0iJy4kb1snakJOZFVfSGdETiddLiciIFVxSHEtZHF4TmQ9IicuJG9bJ2RxeE5kJ10uJyIgQlU9IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIiBIZ0ROPSJITmNIIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJyIgJy4kQnJEZEdoZFVQLicvPic7DQoNCgkJCQl4UE5xMTsJCQkNCgkJCQkNCgkJCQlHcXJOICdITmNIJzoNCgkJCQkNCgkJCQkJTkdoZiAnPEJtRHRIIFVxSHEtSGdETj0iJy4kb1snakJOZFVfSGdETiddLiciIFVxSHEtZHF4TmQ9IicuJG9bJ2RxeE5kJ10uJyIgQlU9IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIiBIZ0ROPSJITmNIIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJyIgJy4kQnJEZEdoZFVQLicvPic7DQoNCgkJCQl4UE5xMTsNCgkJCQkNCgkJCQkNCgkJCQlHcXJOICdEcXJyM2ZQVSc6IC8vQHJCbUdOIEUueS40LkUNCgkJCQkJM0RfTm0wdE50Tl9yR1BCREgoJ05Hai1XcXIxTlVEcXJyM2ZQVScpOw0KCQkJCQkNCgkJCQkJTkdoZiAnPEJtRHRIIEJVPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJy1qcTFOIiBIZ0ROPSJITmNIIiAnLiRCckRkR2hkVVAuJy8+JzsNCgkJCQkJDQoJCQkJCU5HaGYgJzxCbUR0SCBySGdkTj0iVUJyRGRxZzogbWZtTiAhQldEZlBIcW1IOyIgVXFIcS1IZ0ROPSInLiRvWydqQk5kVV9IZ0ROJ10uJyIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLiciIEhnRE49IkhOY0giIG1xV049IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIi8+JzsNCgkJCQkJPz4NCgkJCQkJDQoJCQkJCTxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCgkJCQkJDQoJCQkJCWt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oJCkgew0KCQkJCQkJDQoJCQkJCQlCaiAoICQoJyM8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDE7ID8+LWpxMU4nKS5EUE5vKCkuaHFyN2RxcnIoJ0JHZm0tRFBORE5tVScpICkgew0KCQkJCQkJCQkkKCcjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxOyA/Pi1qcTFOJykuR3JyKCdEcVVVQm1hLWROakgnLGVTKTsNCgkJCQkJCQl9DQoJCQkJCQkJDQoJCQkJCQkJTmRyTiB7DQoJCQkJCQkJCSQoJyM8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDE7ID8+LWpxMU4nKS5HcnIoJ0RxVVVCbWEtZE5qSCcsRXkpOw0KCQkJCQkJCX0NCgkJCQkNCgkJCQkNCgkJCQkJCW1OMyBacXIxTlVRcXJyM2ZQVShVZkd0V05tSC5hTkhYZE5XTm1IOWdZVSgnPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxOyA/Pi1qcTFOJyksICdcdENTN2knKTsNCg0KCQkJCQkJJCgnIzw/RGhEIE5HaGYgJG9bJ2pCTmRVX0hnRE4nXS4kMTsgPz4tanExTicpLjFOZ3REKGp0bUdIQmZtKCkgew0KCQkJCQkJCQ0KCQkJCQkJCSQoJyM8P0RoRCBOR2hmICRvWydqQk5kVV9IZ0ROJ10uJDE7ID8+Jykub3FkKCQoSGhCcikuRFBObygpLm9xZCgpKTsNCgkJCQkJCQkNCgkJCQkJCQl9KTsNCgkJCQkJfSk7CQkJDQoJCQkJCQkNCiAgICAgICAgICAgICAgICAgICAgPC9yR1BCREg+DQogICAgICAgICAgICAgICAgICAgIDw/RGhEDQoJCQkJCQ0KCQkJCXhQTnExOw0KCQkJCQ0KCQkJCQ0KCQkJCUdxck4gJ1VxSE4nOg0KCQkJCQkzRF9ObTB0TnROX3JHUEJESCgnazB0TlBnLXRCLVVxSE5EQkcxTlAnKTsNCgkJCQkJTkdoZiAnPEJtRHRIIFVxSHEtSGdETj0iJy4kb1snakJOZFVfSGdETiddLiciIFVxSHEtZHF4TmQ9IicuJG9bJ2RxeE5kJ10uJyIgQlU9IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIiBIZ0ROPSJITmNIIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJyIgJy4kQnJEZEdoZFVQLicvPic7DQoJCQkJCT8+DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAJCTxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCgkJCWt6dE5QZyhqdG1HSEJmbSgpDQoJCQl7DQoJCQkJa3p0TlBnKCcjTkdqLWpmUFctPD9EaEQgTkdoZiAkUG1VOyA/PiAjPD9EaEQgTkdoZiAkb1snakJOZFVfSGdETiddLiQxIDs/PicpLlVxSE5EQkcxTlAoew0KCQkJCQlVcUhOaWZQV3FIOiAnPD9EaEQgTkdoZiAkb1snVXFITmpmUFdxSCddIDs/PicsDQoJCQkJCURQTm9KTmNIOiAnPEIgR2RxcnI9ImpxIGpxLUdoTm9QZm0tZE5qSCI+PC9CPicsDQoJCQkJCW1OY0hKTmNIOiAnPEIgR2RxcnI9ImpxIGpxLUdoTm9QZm0tUEJhaEgiPjwvQj4nDQoJCQkJfSk7DQoJCQl9KTsJCQkNCgkJPC9yR1BCREg+DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8P0RoRA0KDQoJCQkJeFBOcTE7DQoJCQkJDQoJCQkJDQoJCQkJR3FyTiAnTldxQmQnOg0KCQkJCQ0KCQkJCQlOR2hmICc8Qm1EdEggVXFIcS1IZ0ROPSInLiRvWydqQk5kVV9IZ0ROJ10uJyIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLiciIEhnRE49IkhOY0giIG1xV049IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIiAnLiRCckRkR2hkVVAuJy8+JzsNCg0KCQkJCXhQTnExOw0KCQkJCQ0KCQkJCUdxck4gJzNOeHJCSE4nOg0KDQoJCQkJCU5HaGYgJzxCbUR0SCBVcUhxLUhnRE49IicuJG9bJ2pCTmRVX0hnRE4nXS4nIiBVcUhxLWRxeE5kPSInLiRvWydkcXhOZCddLiciIEJVPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJyIgSGdETj0iSE5jSCIgbXFXTj0iJy4kb1snakJOZFVfSGdETiddLiQxLiciIERkcUdOaGZkVU5QPSJoSEhEOi8vIi8+JzsNCg0KCQkJCXhQTnExOw0KCQkJCQ0KCQkJCUdxck4gJ0RxUHFhUHFEaCc6DQoJCQkJDQoJCQkJCQ0KCQkJCQlOR2hmICc8SE5jSHFQTnEgVXFIcS1IZ0ROPSInLiRvWydqQk5kVV9IZ0ROJ10uJyIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLiciIG1xV049IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIiBQZjNyPSJsIiAnLiRCckRkR2hkVVAuJz48L0hOY0hxUE5xPic7DQoNCgkJCQl4UE5xMTsNCgkJCQkNCgkJCQlHcXJOICdXTnJycWFOJzoNCgkJCQkNCgkJCQkJTkdoZiAnPEhOY0hxUE5xIFVxSHEtSGdETj0iJy4kb1snakJOZFVfSGdETiddLiciIFVxSHEtZHF4TmQ9IicuJG9bJ2RxeE5kJ10uJyIgQlU9IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJDEuJyIgUGYzcj0ibCIgJy4kQnJEZEdoZFVQLic+PC9ITmNIcVBOcT4nOw0KDQoJCQkJeFBOcTE7DQoJCQkJDQoJCQkJR3FyTiAncUhIcUdoV05tSCc6DQoNCgkJCQkJTkdoZiAnPFVCbyBHZHFycj0iTkdqeHRISGZtIHFISHFHaCcuJGpCVS4nIj48Qm1EdEggVXFIcS1IZ0ROPSInLiRvWydqQk5kVV9IZ0ROJ10uJyIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBIZ0ROPSJqQmROIiBCVT0iJy4kb1snakJOZFVfSGdETiddLiQxLiciIG1xV049IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIiAnLiggJGZESFsnV3RkSEJxSEhxR2gnXSA9PSAnZm0nID8gJ1d0ZEhCRGROJzogJycgKS4nPjlQZjNyTjwvVUJvPjxCbUR0SCBCVT0icUhHJy4kUG1VLiciIEhnRE49IkhOY0giIFBOcVVmbWRnPjxVQm8gR2RxcnI9IldOSE5QIj4NCgkJCTxyRHFtIHJIZ2ROPSIzQlVIaDogeSUiPjwvckRxbT4NCgkJPC9VQm8+JzsNCg0KCQkJCXhQTnExOw0KCQkJCQ0KCQkJCUdxck4gJ1BxVUJmJzoNCgkJCQkNCgkJCQkJTkdoZic8VUJvIEdkcXJyPSJCbWRCbU4tYVBmdEQiPic7DQoJCQkJCQ0KCQkJCQkJamZQTnFHaCggJG9bJ2pCTmRVX2ZESEJmbXInXSBxciAkMU5nciA9PiAkb3FkdE5yICkgew0KCQkJCQkJCUJqICggJG9xZHROciApIHsNCgkJCQkJCQkJamZQTnFHaCggJG9xZHROciBxciAkMXIgPT4gJG9yICkgew0KCQkJCQkJCQkJDQoJCQkJCQkJCQlCaiAoICRvclsnR2hORzFOVSddID09ICdIUHROJyApIHsNCgkJCQkJCQkJCQkkQnJVTmpxdGRIID0gJ0doTkcxTlU9IkdoTkcxTlUiJzsNCgkJCQkJCQkJCSB9IE5kck4gew0KCQkJCQkJCQkJCSAkQnJVTmpxdGRIID0gbXRkZDsNCgkJCQkJCQkJCSAJfQ0KCQkJCQkJCQkJTkdoZiAnPGRxeE5kIEdkcXJyPSJQcVVCZiI+PEJtRHRIIG9xZHROPSInLiRvclsnZHF4TmQnXS4nIiBVcUhxLUhnRE49IicuJG9bJ2pCTmRVX0hnRE4nXS4nIiBVcUhxLWRxeE5kPSInLiRvWydkcXhOZCddLiciIEhnRE49IlBxVUJmIiBtcVdOPSInLiRvWydqQk5kVV9IZ0ROJ10uJG9bJ0dCVSddLiciICcuJEJyVU5qcXRkSC4nPjxCPjwvQj4nLiRvclsnZHF4TmQnXS4nPC9kcXhOZD4nOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJCQ0KCQkJCU5HaGYgJzwvVUJvPic7CQkJDQoJCQkJDQoJCQkJeFBOcTE7DQoJCQkJDQoJCQkJR3FyTiAnR2hORzF4ZmNOcic6DQoJCQkJDQoJCQkJCU5HaGYnPFVCbyBHZHFycj0iQm1kQm1OLWFQZnREIj4nOw0KCQkJCQkNCgkJCQkJCWpmUE5xR2goICRvWydqQk5kVV9mREhCZm1yJ10gcXIgJDFOZ3IgPT4gJG9xZHROciApIHsNCgkJCQkJCQlCaiAoICRvcWR0TnIgKSB7DQoJCQkJCQkJCWpmUE5xR2goICRvcWR0TnIgcXIgJDFyID0+ICRvciApIHsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJQmogKCAkb3JbJ0doTkcxTlUnXSA9PSAnSFB0TicgKSB7DQoJCQkJCQkJCQkJJEJyVU5qcXRkSCA9ICdHaE5HMU5VPSJHaE5HMU5VIic7DQoJCQkJCQkJCQkgfSBOZHJOIHsNCgkJCQkJCQkJCQkgJEJyVU5qcXRkSCA9IG10ZGQ7DQoJCQkJCQkJCQkgCX0NCgkJCQkJCQkJCU5HaGYgJzxkcXhOZCBHZHFycj0iR2hORzF4ZmMiPjxCbUR0SCBvcWR0Tj0iJy4kb3JbJ2RxeE5kJ10uJyIgVXFIcS1IZ0ROPSInLiRvWydqQk5kVV9IZ0ROJ10uJyIgVXFIcS1kcXhOZD0iJy4kb1snZHF4TmQnXS4nIiBIZ0ROPSJHaE5HMXhmYyIgbXFXTj0iJy4kb1snakJOZFVfSGdETiddLiRvWydHQlUnXS4nIiAnLiRCclVOanF0ZEguJz48Qj48L0I+Jy4kb3JbJ2RxeE5kJ10uJzwvZHF4TmQ+JzsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCQkNCgkJCQlOR2hmICc8L1VCbz4nOwkJCQ0KCQkJCQ0KCQkJCXhQTnExOw0KCQkJDQoJCQkJR3FyTiAnVVBmRFVmM20nOg0KCQkJCQ0KCQkJCQlOR2hmICc8ck5kTkdIIFVxSHEtSGdETj0iJy4kb1snakJOZFVfSGdETiddLiciIFVxSHEtZHF4TmQ9IicuJG9bJ2RxeE5kJ10uJyIgbXFXTj0iJy4kb1snakJOZFVfSGdETiddLiQxLiciPic7DQoJCQkJCQlOR2hmICc8ZkRIQmZtIG9xZHROPSIiPi0tLSByTmROR0ggLS0tPC9mREhCZm0+JzsNCgkJCQkJCWpmUE5xR2goICRvWydqQk5kVV9mREhCZm1yJ10gcXIgJDFOZ3IgPT4gJG9xZHROciApIHsNCgkJCQkJCQlCaiAoICRvcWR0TnIgKSB7DQoJCQkJCQkJCWpmUE5xR2goICRvcWR0TnIgcXIgJDFyID0+ICRvciApIHsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJQmogKCAkb3JbJ0doTkcxTlUnXSA9PSAnSFB0TicgKSB7DQoJCQkJCQkJCQkJJEJyVU5qcXRkSCA9ICdyTmROR0hOVSc7DQoJCQkJCQkJCQkgfSBOZHJOIHsNCgkJCQkJCQkJCQkgJEJyVU5qcXRkSCA9IG10ZGQ7DQoJCQkJCQkJCQkgCX0NCgkJCQkJCQkJCQ0KCQkJCQkJCQkJTkdoZiAnPGZESEJmbSBvcWR0Tj0iJy4kb3JbJ2RxeE5kJ10uJyIgJy4kQnJVTmpxdGRILic+Jy4kb3JbJ2RxeE5kJ10uJzwvZkRIQmZtPic7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQkJCQ0KCQkJCQlOR2hmICc8L3JOZE5HSD4nOw0KCQkJCQlOR2hmICc8Qj48L0I+JzsNCg0KCQkJCXhQTnExOw0KCQkJCQ0KCQkJCUdxck4gJ1VORHFQSFdObUgnOg0KCQkJCQkNCgkJCQkJTkdoZiAnPHJOZE5HSCBVcUhxLUhnRE49IicuJG9bJ2pCTmRVX0hnRE4nXS4nIiBVcUhxLWRxeE5kPSInLiRvWydkcXhOZCddLiciIG1xV049IicuJG9bJ2pCTmRVX0hnRE4nXS4kMS4nIj4nOw0KCQkJCQkJTkdoZiAnPGZESEJmbSBvcWR0Tj0iIj4tLS0gck5kTkdIIC0tLTwvZkRIQmZtPic7DQoJCQkJCQlqZlBOcUdoKCAkb1snakJOZFVfZkRIQmZtciddIHFyICQxTmdyID0+ICRvcWR0TnIgKSB7DQoJCQkJCQkJQmogKCAkb3FkdE5yICkgew0KCQkJCQkJCQlqZlBOcUdoKCAkb3FkdE5yIHFyICQxciA9PiAkb3IgKSB7DQoJCQkJCQkJCQkNCgkJCQkJCQkJCUJqICggJG9yWydHaE5HMU5VJ10gPT0gJ0hQdE4nICkgew0KCQkJCQkJCQkJCSRCclVOanF0ZEggPSAnck5kTkdITlUnOw0KCQkJCQkJCQkJIH0gTmRyTiB7DQoJCQkJCQkJCQkJICRCclVOanF0ZEggPSBtdGRkOw0KCQkJCQkJCQkJIAl9DQoJCQkJCQkJCQkNCgkJCQkJCQkJCU5HaGYgJzxmREhCZm0gVXFIcS1VTkRITldxQmQ9IicuJG9yWydOV3FCZHFVVVBOcnInXS4nIiBvcWR0Tj0iJy4kb3JbJ2RxeE5kJ10uJyIgJy4kQnJVTmpxdGRILic+Jy4kb3JbJ2RxeE5kJ10uJzwvZkRIQmZtPic7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQkJCQ0KCQkJCQlOR2hmICc8L3JOZE5HSD4nOw0KCQkJCQlOR2hmICc8Qj48L0I+JzsNCg0KCQkJCXhQTnExOw0KCQkJCQ0KCQkJCQ0KCQkJCVVOanF0ZEg6IC8vIFhtVSBpZlBOcUdoDQoJCQkJeFBOcTE7DQoJCQkJDQoJCQkJfQ0KCQkJCQlCaiAoICRvWydqQk5kVV9IZ0ROJ10gIT0gJ3FVVVBOcnInIHx8ICRvWydqQk5kVV9IZ0ROJ10gIT0gJ1VxSE5QcW1hTicgfHwgJG9bJ2pCTmRVX0hnRE4nXSAhPSAncmRCVU5QJyApIHsNCgkJCQkJCU5HaGYgJzwvZHF4TmQ+JzsNCgkJCQkJCX0NCgkJCQkJCQ0KCQkJCQkJQmogKCBCcnJOSCggJG9bJ3FISHFHaG1mSE4nXSApICYmIEhQQlcgKCAkb1sncUhIcUdobWZITiddICkgPT0gJ0UnICYmICRvWydqQk5kVV9IZ0ROJ10gPT0gJ3FISHFHaFdObUgnICkgew0KCQkJCQkJCU5HaGYgJzxVQm8gR2RxcnI9Ik5Ham1mSE4iPjxySFBmbWE+c01KWCA6PC9ySFBmbWE+ICcgLkhQQlcgKCAkb1snakJOZFVfZkRIQmZtciddWydVTnJHUEJESEJmbSddICkuJzwvVUJvPic7DQoJCQkJCQkJfQ0KCQkJCQkJDQoJCQkJCUJqICggJG9bJ2pCTmRVX0hnRE4nXSAhPSAncVVVUE5ycicgfHwgJG9bJ2pCTmRVX0hnRE4nXSAhPSAnVXFITlBxbWFOJyApIHsNCgkJCQkJCU5HaGYgJzwvck5HSEJmbT4nOw0KCQkJCQl9DQoJCQkNCgkJCX0NCgkJfQ0KCQkNCgkJDQoJCSBCaiAoICRmREhbJ0JyR3FESEdocSddID09ICdmbScgKSB7DQoJCT8+DQoJCQkJCTxyTkdIQmZtPg0KCQkJCQkJPGRxeE5kIEdkcXJyPSJkcXhOZCI+PD9EaEQgQmogKCAkZkRIWydHcURIR2hxZHhkJ10gIT0gJ21mbU4nICkgeyBOR2hmICRmREhbJ0dxREhHaHFkeGQnXTsgfSA/PjwvZHF4TmQ+DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAJPD9EaEQgTkdqX0dxREhHaHFfaE5kRE5QX2pmZkhOUCggbXRkZCwgJGZESFsnR3FESEdocXJIZ2ROJ10sICRmREhbJ0dxREhHaHFEdHgnXSwgJGZESFsnR3FESEdocUhoVyddICk7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCQkJCQk8L3JOR0hCZm0+DQogICAgICAgICAgICAgPD9EaEQgfSA/PiAgICAgICANCiAgICAgICAJCSA8L2pCTmRVck5IPg0KICAgICAgICAJCTxqZmZITlA+DQogICAgICAgICAgICAgICAgICAgIDx4dEhIZm0gVXFIcS1ySGdkTj0iPD9EaEQgTkdoZiAkZkRIWydqZl9qQk5kVV94SG1fcW1XJ107ID8+IiBCVT0iR2otcnR4V0JISE5VPD9EaEQgTkdoZiAkUG1VOyA/PiIgR2RxcnI9Ik5Hanh0SEhmbSBkcVVVcS14dEhIZm0iIEhnRE49InJ0eFdCSCIgbXFXTj0iR2otcnR4V0JISE5VPD9EaEQgTkdoZiAkUG1VOyA/PiI+PHJEcW0gR2RxcnI9ImRxVVVxLWRxeE5kIj48P0RoRCBOR2hmICRmREhbJ2pmX2pCTmRVX3hIbV9IY0gnXTsgPz48L3JEcW0+PC94dEhIZm0+IA0KCQkJCTwvamZmSE5QPg0KCQkJPC9qZlBXPg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8P0RoRCAgQmogKCBOR2pfYU5IX3Fqal9mREhCZm0oICdOR2pfcWpqQmRCcUhOX0JtamYnLCAnTkdqX3Fqal9CVScsICcnICkgKSB7DQoJCQkJQmogKCAkQnIzQlVhTkggKSB7ICRCckQzUFUgPSAnOWcgJzsgfSBOZHJOIHsgJEJyRDNQVSA9ICdRZjNOUE5VIHhnICc7IH0NCgkJCT8+DQogICAgICAgICAgICA8ckRxbSBHZHFycj0iTkdqLXFqai1kQm0xIj48P0RoRCBOR2hmICRCckQzUFU7ID8+PHEgaFBOaj0iaEhIRHI6Ly9yTkd0UE4uYWhmcGdkcXguR2ZXL1VOV2YvP1BOaj08P0RoRCBOR2hmIE5Hal9hTkhfcWpqX2ZESEJmbSggJ05Hal9xampCZEJxSE5fQm1qZicsICdOR2pfcWpqX0JVJywgJycgKTsgPz4mYWZIZj1OR2oiIEhxUGFOSD0iX3hkcW0xIj5YcXJnIDdmbUhxR0ggaWZQVyBRZHRhQm08L3E+PC9yRHFtPg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8P0RoRCB9IC8vIEByQm1HTiBFLnkubC5FTyA/PiANCiAgICAgICAgICAgIDw/RGhEIEJqICggJFdmVXFkICYmICBOV0RIZyggJEhEICkgKSB7ID8+DQogICAgICAgICAgICA8VUJvIEJVPSI8P0RoRCBOR2hmICRQbVU7ID8+LWpmUFctV2ZVcWQtZm9OUGRxZyIgR2RxcnI9ImpmUFctV2ZVcWQtZm9OUGRxZyI+IDw/RGhEIH0gPz4NCiAgICAgICAgICAgIDwvVUJvPiAgDQo8IS0tIFhzRiBpZlBXIFpxUDF0RCBqZlAgaWZQVyBZRjogPD9EaEQgTkdoZiAkakJVOyA/PiAtLT4gICANCiAgICAgICAgICAgIA0KDQogICAgPCEtLSAySkFWSiA3dHJIZlcgNzIyIGpmUCBpZlBXIFlGOiA8P0RoRCBOR2hmICRqQlU7ID8+IC0tPg0KICAgIDxySGdkTj4NCgk8P0RoRCAkalcgPSAnI2pmUFctJy4kUG1VLicgJzsgJEdyckdmVU4gPSBySFBfUE5EZHFHTiggJ3tqZlBXQlV9JywgJGpXLCAkZkRIWydqZl9HdHJIZldfR3JyJ10gKTsgTkdoZiAkR3JyR2ZVTjsgPz4NCiAgICA8L3JIZ2ROPg0KICAgIDwhLS0gWHNGICA3dHJIZlcgNzIyIGpmUCBpZlBXIFlGOiA8P0RoRCBOR2hmICRqQlU7ID8+IC0tPgkNCiAgICAgIA0KICAgIDwhLS0gMkpBVkogN3RySGZXIEkyIGpmUCBpZlBXIFlGOiA8P0RoRCBOR2hmICRqQlU7ID8+IC0tPg0KICAgIDxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCgkvKjwhWzdGQUpBWyovDQoJPD9EaEQgTkdoZiAkZkRIWydqZl9HdHJIZldfa3InXTsgPz4NCiAgICAvKl1dPiovPC9yR1BCREg+DQogICAgPCEtLSBYc0YgIDd0ckhmVyBJMiBqZlAgaWZQVyBZRjogPD9EaEQgTkdoZiAkakJVOyA/PiAtLT4JDQogICAgICAgICAgIAkJDQoJCQkNCgk8P0RoRA0KCQ0KCSRIaE5qZlBXID0gZnhfYU5IX0dkTnFtKCk7DQoJDQoJQmogKCBOV0RIZyggJGZESFsnalBXTmRvcWQnXSApICkgeyAvLyBAckJtR04gRS55LjQuRQ0KCQlOR2hmIE5Hal9tZkhCamcoJ2pmUFdOZE5XTm1IJywgJGpCVSk7DQoJCX0gTmRyTiB7DQoJCQlOR2hmICRIaE5qZlBXOwkJDQoJCQl9DQoJCQkNCgl9IC8vIFhtVSBOR2pfV3FQMXREX2FObU5QcUhmUCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIGlQZm1ITm1VIEZnbXFXQkcgNzIyDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwkNCmp0bUdIQmZtIE5Hal9qZlBXX3JIZ2ROX2FObU5QcUhmUCggJFBtVVcsICRmREgsICRCcjNVYUggPSBtdGRkLCAkV2ZVcWQgPSBtdGRkICkgew0KDQoJJGpmID0gJyNOR2otamZQVy0nLiRQbVVXLicgJzsNCgkNCgkvLyBpZlBXIFFxSEhOUG0vaWZmSE5QIEByQm1HTiBFLnkubC5PDQoJDQoJQmogKCAkZkRIWydqZl9qZmZITlBfR2ZkJ10gPT0gJycgKSB7DQoJCSRmREhbJ2pmX2pmZkhOUF9HZmQnXSA9ICcjaTRpNGk0JzsNCgkJfSBOZHJOIHsNCgkJCSRmREhbJ2pmX2pmZkhOUF9HZmQnXSA9ICRmREhbJ2pmX2pmZkhOUF9HZmQnXTsNCgkJCX0NCg0KCUJqICggJGZESFsnamZfRHFISE5QbSddID09ICdtZl9EcUhITlBtJyB8fCAkZkRIWydqZl9EcUhITlBtJ10gPT0gJycgKSB7DQoJCU5HaGYgJGpmLicjamZQVy0nLiRQbVVXLicgakJOZFVyTkgge3hxRzFhUGZ0bVU6IG1mbU47fScuIlxtIjsNCgkJfSBOZHJOIHsNCgkJCU5HaGYgJGpmLicjamZQVy0nLiRQbVVXLicgakJOZFVyTkgge3hxRzFhUGZ0bVU6IHRQZCgnLlg3aV9LVnUuJy9HcnIvQldxYU5yL0RxSEhOUG1yLycuJGZESFsnamZfRHFISE5QbSddLicpICFCV0RmUEhxbUg7IHhxRzFhUGZ0bVUtUE5ETnFIOiBQTkROcUg7fScuIlxtIjsNCgkJCX0NCg0KCUJqICggJGZESFsnamZfRHFVVUJtYSddID09ICcnICkgew0KCQlOR2hmICRqZi4ne0RxVVVCbWE6IGV5RGM7fScuIlxtIjsgLy8gQHJCbUdOIEUueS5sLkVTDQoJCX0gTmRyTiB7DQoJCQlOR2hmICRqZi4ne0RxVVVCbWE6ICcuJGZESFsnamZfRHFVVUJtYSddLidEYzt9Jy4iXG0iOyAvLyBAckJtR04gRS55LmwuRVMNCgkJCX0NCgkJCQ0KCU5HaGYgJGpmLicuTkdqLWpmUFcge0dmZGZQOiAnLiRmREhbJ2pmX0hjSF9HZmQnXS4nICFCV0RmUEhxbUg7fScuIlxtIjsNCglOR2hmICRqZi4ne1dxYy0zQlVIaDogJy4kZkRIWydqZl8zQlVIaCddLidEYzt9Jy4iXG0iOw0KCU5HaGYgJGpmLicjamZQVy0nLiRQbVVXLicge3hxRzFhUGZ0bVU6IG1mbU4gUE5ETnFIIHJHUGZkZCB5JSB5JSBQYXhxKCcuTkdqX2hOY0NQYXgoICRmREhbJ2pmX3hhX0dmZCddICkuJywgRSk7IHhmUFVOUDogcmZkQlUgJy4kZkRIWydqZl94UFVQJ10uJ0RjICcuJGZESFsnamZfeFBVUF9HZmQnXS4nO30nLiJcbSI7DQoJQmogKCAkZkRIWydqZl9Ccl9yaDMnXSA9PSAnZm0nICkgeyBOR2hmICRqZi4nI2pmUFctJy4kUG1VVy4nIHt4ZmMtcmhxVWYzOiB5RGMgeURjIEV5RGMgUGF4cSgnLk5Hal9oTmNDUGF4KCAkZkRIWydqZl9yVTNfR2ZkJ10gKS4nLCB5LmIpICFCV0RmUEhxbUg7fScuIlxtIjsgfSBOZHJOIHsgTkdoZiAkamYuJyNqZlBXLScuJFBtVVcuJyB7eGZjLXJocVVmMzogbWZtTjt9Jy4iXG0iOyB9DQoJDQoNCglCaiAoIEJyX3FQUHFnKCAkZkRIWydqZl9IZ0RmX2hOcVVOUCddICkgJiYgJGZESFsnamZfSGdEZl9oTnFVTlAnXVsnamZtSCddICE9J01ETm0gMnFtcicgKSB7DQoJDQoJTkdqX2pQZm1ITm1VX0d0ckhmV19IZ0RmX2pmbUhyKCAnamZfSGdEZl9oTnFVTlAnLCAkUG1VVywgaEhXZHJETkdCcWRHaHFQciggJGZESFsnamZfSGdEZl9oTnFVTlAnXVsnamZtSCddICkgKTsJDQoJcVVVX3FHSEJmbSgnM0RfRFBCbUhfckhnZE5yJywgJ05Hal9qUGZtSE5tVV9HdHJIZldfSGdEZl9qZm1IcicsIEVTKTsNCgkJDQoJTkdoZiAkamYuJyNqZlBXLScuJFBtVVcuJyBoTnFVTlAge3hxRzFhUGZ0bVU6IG1mbU4gUE5ETnFIIHJHUGZkZCB5JSB5JSBQYXhxKCcuTkdqX2hOY0NQYXgoICRmREhbJ2pmX2hOcVVfR2ZkJ10gKS4nLCBFKTsgamZtSC1yQnBOOiAnLiRmREhbJ2pmX0hnRGZfaE5xVU5QJ11bJ3JCcE4nXS4nICFCV0RmUEhxbUg7IGpmbUgtM05CYWhIOiAnLiRmREhbJ2pmX0hnRGZfaE5xVU5QJ11bJzNOQmFoSCddLicgIUJXRGZQSHFtSDsgR2ZkZlA6ICcuJGZESFsnamZfSGdEZl9oTnFVTlAnXVsnR2ZkZlAnXS4nOyBqZm1ILWpxV0JkZzogJy5oSFdkckROR0JxZEdocVByKCAkZkRIWydqZl9IZ0RmX2hOcVVOUCddWydqZm1IJ10gKS4nO30nLiJcbSI7DQoJDQoJfQ0KCQ0KCUJqICggQnJfcVBQcWcoICRmREhbJ2pmX0hnRGZfZHF4TmQnXSApICYmICRmREhbJ2pmX0hnRGZfZHF4TmQnXVsnamZtSCddICE9J01ETm0gMnFtcicgKSB7DQoJCQ0KCU5Hal9qUGZtSE5tVV9HdHJIZldfSGdEZl9qZm1IciggJ2pmX0hnRGZfZHF4TmQnLCAkUG1VVywgaEhXZHJETkdCcWRHaHFQciggJGZESFsnamZfSGdEZl9kcXhOZCddWydqZm1IJ10gKSApOwkNCglxVVVfcUdIQmZtKCczRF9EUEJtSF9ySGdkTnInLCAnTkdqX2pQZm1ITm1VX0d0ckhmV19IZ0RmX2pmbUhyJywgRVMpOw0KCQ0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLmRxeE5kIHtqZm1ILXJCcE46ICcuJGZESFsnamZfSGdEZl9kcXhOZCddWydyQnBOJ10uJyAhQldEZlBIcW1IOyBqZm1ILTNOQmFoSDogJy4kZkRIWydqZl9IZ0RmX2RxeE5kJ11bJzNOQmFoSCddLicgIUJXRGZQSHFtSDsgR2ZkZlA6ICcuJGZESFsnamZfSGdEZl9kcXhOZCddWydHZmRmUCddLic7IGpmbUgtanFXQmRnOiAnLmhIV2RyRE5HQnFkR2hxUHIoICRmREhbJ2pmX0hnRGZfZHF4TmQnXVsnamZtSCddICkuJzt9Jy4iXG0iOw0KCQkNCgl9DQoJDQoJQmogKCBCcl9xUFBxZyggJGZESFsnamZfSGdEZl94dEhIZm0nXSApICYmICRmREhbJ2pmX0hnRGZfeHRISGZtJ11bJ2pmbUgnXSAhPSdNRE5tIDJxbXInICkgew0KCQkNCglOR2pfalBmbUhObVVfR3RySGZXX0hnRGZfamZtSHIoICdqZl9IZ0RmX3h0SEhmbScsICRQbVVXLCBoSFdkckROR0JxZEdocVByKCAkZkRIWydqZl9IZ0RmX3h0SEhmbSddWydqZm1IJ10gKSApOwkNCglxVVVfcUdIQmZtKCczRF9EUEJtSF9ySGdkTnInLCAnTkdqX2pQZm1ITm1VX0d0ckhmV19IZ0RmX2pmbUhyJywgRVMpOw0KCQ0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLk5Hanh0SEhmbSwgJy4kamYuJy5OR2otamZQVyAuQm1EdEgtakJkTiAuTkdqeHRISGZtIHtqZm1ILXJCcE46ICcuJGZESFsnamZfSGdEZl94dEhIZm0nXVsnckJwTiddLicgIUJXRGZQSHFtSDsgamZtSC0zTkJhaEg6ICcuJGZESFsnamZfSGdEZl94dEhIZm0nXVsnM05CYWhIJ10uJyAhQldEZlBIcW1IOyBHZmRmUDogJy4kZkRIWydqZl9IZ0RmX3h0SEhmbSddWydHZmRmUCddLic7IGpmbUgtanFXQmRnOiAnLmhIV2RyRE5HQnFkR2hxUHIoICRmREhbJ2pmX0hnRGZfeHRISGZtJ11bJ2pmbUgnXSApLicgIUJXRGZQSHFtSDt9Jy4iXG0iOw0KCQkNCgl9DQoNCglOR2hmICRqZi4nI2pmUFctJy4kUG1VVy4nIGpmZkhOUCB7eHFHMWFQZnRtVTogbWZtTiBQTkROcUggckdQZmRkIHklIHklIFBheHEoJy5OR2pfaE5jQ1BheCggJGZESFsnamZfamZmSE5QX0dmZCddICkuJywgRSk7fScuIlxtIjsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5CbUR0SCBCbUR0SCwnOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLnJOZE5HSCByTmROR0gsJzsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5ITmNIcVBOcSBITmNIcVBOcSB7eHFHMWFQZnRtVTogJy4kZkRIWydqZl9qQk5kVV94MV9HZmQnXS4nO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuSGZhYWROIEI6eE5qZlBOIHt4cUcxYVBmdG1VLUdmZGZQOiAnLiRmREhbJ2pmX2pCTmRVX3hmUF9HZmQnXS4nO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAueHRISGZtIHt4cUcxYVBmdG1VLUdmZGZQOiAnLiRmREhbJ2pmX2pCTmRVX3hmUF9HZmQnXS4nO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuQm1EdEg6aGZvTlAgQm1EdEgsJy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLnJOZE5HSDpoZm9OUCByTmROR0gsJy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLkhOY0hxUE5xOmhmb05QIEhOY0hxUE5xLCcuIlxtIjsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5QcVVCZjpoZm9OUCBCLCcuIlxtIjsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5HaE5HMXhmYzpoZm9OUCBCLCcuIlxtIjsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5IZmFhZE46aGZvTlAgQiwnLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAudEItcmRCVU5QLWhxbVVkTjpoZm9OUCB7eGZQVU5QLUdmZGZQOiAnLiRmREhbJ2pmX2pCTmRVX3hmUF9HZmQnXS4nO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAudEItcmRCVU5QLWhxbVVkTjpoZm9OUCB7eGZQVU5QLUdmZGZQOiAnLiRmREhbJ2pmX2pCTmRVX3hmUF9HZmQnXS4nO30nLiJcbSI7CQ0KCS8vTkdoZiAkamYuJy5OR2otamZQVyAudEItcmRCVU5QLVBxbWFOIHt4cUcxYVBmdG1VOiBIUHFtckRxUE5tSCAtV2ZwLWRCbU5xUC1hUHFVQk5tSChHTm1ITlAgSGZEICwgI2lpaSB5JSwgJy4kZkRIWydqZl9qQk5kVV94ZlBfR2ZkJ10uJyBFeXklKSBQTkROcUggckdQZmRkIHklIHklO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuUHFIQm1hIEJtRHRIICsgZHF4TmQ6aGZvTlAsJy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLlBxSEJtYSBCbUR0SCArIGRxeE5kOmhmb05QIH4gZHF4TmQge0dmZGZQOiAnLiRmREhbJ2pmX2pCTmRVX3hmUF9HZmQnXS4nO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuQm1EdEggQm1EdEg6amZHdHIsJy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLnJOZE5HSCByTmROR0g6amZHdHIsJy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLkhOY0hxUE5xIEhOY0hxUE5xOmpmR3RyLCcuIlxtIjsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5QcVVCZiBCbUR0SDpqZkd0ciArIEIsJy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLkdoTkcxeGZjIEJtRHRIOmpmR3RyICsgQiwnLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuSGZhYWROIEJtRHRIOmpmR3RyICsgQiB7eGZQVU5QLUdmZGZQOiAnLiRmREhbJ2pmX2pCTmRVX3hmUF9HZmQnXS4nO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuUHFVQmYgQm1EdEggKyBCOnFqSE5QIHt4cUcxYVBmdG1VLUdmZGZQOiAnLiRmREhbJ2pmX2pCTmRVX3hmUF9HZmQnXS4nO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuR2hORzF4ZmMgQm1EdEggKyBCOnFqSE5QIHtHZmRmUDogJy4kZkRIWydqZl9qQk5kVV94ZlBfR2ZkJ10uJzt9Jy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLlBxVUJmIEJtRHRIOkdoTkcxTlUgKyBCLCcuIlxtIjsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5HaE5HMXhmYyBCbUR0SDpHaE5HMU5VICsgQiwnLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuSGZhYWROIEJtRHRIOkdoTkcxTlUgKyBCIHt4ZlBVTlAtR2ZkZlA6ICcuJGZESFsnamZfakJOZFVfeGZQX0dmZCddLic7fScuIlxtIjsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5QcUhCbWEgQm1EdEg6R2hORzFOVSB+IGRxeE5kIHtHZmRmUDogJy4kZkRIWydqZl9qQk5kVV94ZlBfR2ZkJ10uJzt9Jy4iXG0iOw0KCQ0KCUJqICggJEJyM1VhSCApIHsgLy8gQHJCbUdOIEUueS40LkUNCglOR2hmICRqZi4nLk5Hai1qZlBXIGpCTmRVck5IIHtEcVVVQm1hOiBDU0RjIEVFRGMgU0RjO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuQkdmbS1xRERObVUsICcuJGpmLicuTkdqLWpmUFcgLkJHZm0tRFBORE5tVSB7VUJyRGRxZzogbWZtTjt9Jy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLkJtRHRIIC5CR2ZtLURQTkRObVUgKyBCbUR0SCwnLiRqZi4nLk5Hai1qZlBXIC5ITmNIcVBOcSAuQkdmbS1EUE5ETm1VICsgSE5jSHFQTnEge0RxVVVCbWEtZE5qSDogbERjO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuQm1EdEggLkJHZm0tcURETm1VICsgQm1EdEgsJy4kamYuJy5OR2otamZQVyAuSE5jSHFQTnEgLkJHZm0tcURETm1VICsgSE5jSHFQTnEge0RxVVVCbWEtUEJhaEg6IGxEYzt9Jy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLkJtRHRIIC5CR2ZtLURQTkRObVUgKyAuQkdmbS1xRERObVUgKyBCbUR0SCwnLiRqZi4nLk5Hai1qZlBXIC5ITmNIcVBOcSAuQkdmbS1EUE5ETm1VICsgLkJHZm0tcURETm1VICsgSE5jSHFQTnEgew0KRHFVVUJtYS1kTmpIOiBsRGM7fScuIlxtIjsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5CbUR0SCBCbUR0SCwnLiRqZi4nLk5Hai1qZlBXIC5yTmROR0ggck5kTkdIIHtoTkJhaEg6IENPRGM7RHFVVUJtYTogeURjIEV5RGM7fScuIlxtIjsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5ITmNIcVBOcSBITmNIcVBOcSB7RHFVVUJtYTogRXlEYyBFeURjO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuZHF4TmQge1dxUGFCbS14ZkhIZlc6IEVEYzt9Jy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLnJOZE5HSCBCIHtIZkQ6IEVlRGM7aE5CYWhIOiBFRGM7fScuIlxtIjsNCglOR2hmICRqZi4nLk5Hai1qZlBXIC5CbUR0SC1qQmROIC5OR2p4dEhIZm0ge2hOQmFoSDogQ0NEYztkQm1OLWhOQmFoSDogQ0VEYyAhQldEZlBIcW1IO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyBqZmZITlAge0RxVVVCbWE6IEVTRGMgRXlEYyBDU0RjO30nLiJcbSI7DQoJTkdoZiAkamYuJy5OR2otamZQVyAuQm1EdEgtR3FESEdocSBCV2EgezNCVUhoOiB3eURjO2hOQmFoSDogQ2JEYztIZkQ6IGVEYzt9Jy4iXG0iOw0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLlBOalBOcmgtR3FESEdocSB7SGZEOiBlRGM7fScuIlxtIjsNCgkJfQ0KCU5HaGYgJGpmLicuTkdqLWpmUFcgLk5Hanh0SEhmbSB7IHhxRzFhUGZ0bVUtR2ZkZlA6ICcuJGZESFsnamZfakJOZFVfeEhtX0dmZCddLic7ICcuJGpmLicuTkdqLWpmUFcgLk5Hanh0SEhmbTpoZm9OUHt4cUcxYVBmdG1VLUdmZGZQOiAnLiRmREhbJ2pmX2pCTmRVX3hIbV9HZmQnXS4nO0dmZGZQOiAjampqOyBmdEhkQm1OOm1mbU4gIUJXRGZQSHFtSDt9Jy4iXG0iOw0KDQp9DQoJDQoJDQpqdG1HSEJmbSBOR2pfalBmbUhObVVfR3RySGZXX0hnRGZfamZtSHIoICROZG1xV04gPSBtdGRkLCAkUG1VVyA9IG10ZGQsICRqcVdCZGcgPSBtdGRkICkgeyANCgkzRF9QTmFCckhOUF9ySGdkTiggJE5kbXFXTi4nLScgLiAkUG1VVywgJ2hISERyOi8vamZtSHIuYWZmYWROcURCci5HZlcvR3JyP2pxV0JkZz0nIC5ySFBfUE5EZHFHTignICcsJysnLCRqcVdCZGcgKS4nJyk7DQoJM0RfTm0wdE50Tl9ySGdkTiggJE5kbXFXTi4nLScgLiAkUG1VVyApOw0KDQp9DQoNCg0KDQoNCg0KPz4=';$_D=strrev('edoced_46esab');eval($_D('JF9DMTc2NzI3OTEzMj1iYXNlNjRfZGVjb2RlKCRfQzE3NjcyNzkxMzIpOyRfQzE3NjcyNzkxMzI9c3RydHIoJF9DMTc2NzI3OTEzMiwnd0FYaThOQnVLRDJ5NkNjSkU1Vk9UZWFqUkhTWTlsc21QV3Zxcm9rUU0xNHBmR0l4WnpnNzB0bmJoZExGVTMnLCc2QUVGV2VpTFVwUzBZMnhUMUtSOUg0Z2ZYdDVJQjdObnJtWmFzdmpQT2s4em9jSmJNUXlDcXVHM2hsVkRkdycpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfQzE3NjcyNzkxMzIpO2V2YWwoJF9SKTskX1I9MDskX0MxNzY3Mjc5MTMyPTA7'));?>
Function Calls
strtr | 1 |
strrev | 1 |
str_replace | 1 |
base64_decode | 2 |
Stats
MD5 | 42d1886de757d90f80becd9bc234ae8a |
Eval Count | 2 |
Decode Time | 393 ms |