{"version":3,"sources":["webpack:///js/vendor.min.js","webpack:///webpack/bootstrap 37255e536ff6d2011952","webpack:///./vendor.js","webpack:///../Vendor/amcharts/amcharts.js","webpack:///../~/script-loader/addScript.js","webpack:///../Vendor/amcharts/amcharts.js?5308","webpack:///../Vendor/amcharts/lang/es.js","webpack:///../Vendor/amcharts/lang/es.js?8833","webpack:///../Vendor/amcharts/pie.js","webpack:///../Vendor/amcharts/pie.js?42bf","webpack:///../Vendor/amcharts/serial.js","webpack:///../Vendor/amcharts/serial.js?c82a","webpack:///../Vendor/amcharts/themes/light.js","webpack:///../Vendor/amcharts/themes/light.js?483e","webpack:///../Vendor/amcharts/plugins/export/export.js","webpack:///../Vendor/amcharts/plugins/export/export.js?adf2","webpack:///../bower_components/bootstrap-sass/assets/javascripts/bootstrap.min.js","webpack:///../bower_components/bootstrap-sass/assets/javascripts/bootstrap.min.js?4076","webpack:///../bower_components/moment/min/moment.min.js","webpack:///../bower_components/moment/min/moment.min.js?be16","webpack:///../bower_components/bootstrap-daterangepicker/daterangepicker.js","webpack:///../bower_components/bootstrap-daterangepicker/daterangepicker.js?6bc2"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","parentJsonpFunction","window","chunkIds","moreModules","chunkId","i","callbacks","length","installedChunks","push","apply","shift",1,"e","callback","undefined","head","document","getElementsByTagName","script","createElement","type","charset","async","src","p","0","appendChild","m","c","execScript","eval"],"mappings":"CAAS,SAAUA,GCmCnB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAE,WACAE,GAAAJ,EACAK,QAAA,EAUA,OANAP,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,QAAA,EAGAF,EAAAD,QAtDA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,GAIA,IADA,GAAAV,GAAAW,EAAAC,EAAA,EAAAC,KACQD,EAAAH,EAAAK,OAAoBF,IAC5BD,EAAAF,EAAAG,GACAG,EAAAJ,IACAE,EAAAG,KAAAC,MAAAJ,EAAAE,EAAAJ,IACAI,EAAAJ,GAAA,CAEA,KAAAX,IAAAU,GACAZ,EAAAE,GAAAU,EAAAV,EAGA,KADAO,KAAAE,EAAAC,GACAG,EAAAC,QACAD,EAAAK,QAAAZ,KAAA,KAAAP,EACA,OAAAW,GAAA,IACAT,EAAA,KACAF,EAAA,IAFA,OAOA,IAAAE,MAKAc,GACAI,EAAA,EA6DA,OAhCApB,GAAAqB,EAAA,SAAAT,EAAAU,GAEA,OAAAN,EAAAJ,GACA,MAAAU,GAAAf,KAAA,KAAAP,EAGA,IAAAuB,SAAAP,EAAAJ,GACAI,EAAAJ,GAAAK,KAAAK,OACI,CAEJN,EAAAJ,IAAAU,EACA,IAAAE,GAAAC,SAAAC,qBAAA,WACAC,EAAAF,SAAAG,cAAA,SACAD,GAAAE,KAAA,kBACAF,EAAAG,QAAA,QACAH,EAAAI,OAAA,EAEAJ,EAAAK,IAAAhC,EAAAiC,EAAA,GAAArB,EAAA,SAAmEsB,EAAA,OAAUtB,OAAA,UAC7EY,EAAAW,YAAAR,KAKA3B,EAAAoC,EAAArC,EAGAC,EAAAqC,EAAAnC,EAGAF,EAAAiC,EAAA,GAGAjC,EAAA,KDMM,SAASI,EAAQD,EAASH,GElGhCA,EAAA,IACAA,EAAA,IACAA,EAAA,IACAA,EAAA,IACAA,EAAA,IACAA,EAAA,IACAA,EAAA,IACAA,EAAA,IACAA,EAAA,KFuGO,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACC,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEF,SAASI,EAAQD,EAASH,GGjIhCA,EAAA,IAAAA,EAAA,MHuIM,SAASI,EAAQD,GInIvBC,EAAAD,QAAA,SAAA6B,GACA,kBAAAM,YACAA,WAAAN,GAEAO,KAAAhC,KAAA,KAAAyB,KJ8IM,SAAS5B,EAAQD,GKtJvBC,EAAAD,QAAA;EL4JM,SAASC,EAAQD,EAASH,GM5JhCA,EAAA,IAAAA,EAAA,MNkKM,SAASI,EAAQD,GOlKvBC,EAAAD,QAAA,saPwKM,SAASC,EAAQD,EAASH,GQxKhCA,EAAA,IAAAA,EAAA,MR8KM,SAASI,EAAQD,GS9KvBC,EAAAD,QAAA,umcToLM,SAASC,EAAQD,EAASH,GUpLhCA,EAAA,IAAAA,EAAA,MV0LM,SAASI,EAAQD,GW1LvBC,EAAAD,QAAA;EXgMM,SAASC,EAAQD,EAASH,GYhMhCA,EAAA,IAAAA,EAAA,MZsMM,SAASI,EAAQD,GatMvBC,EAAAD,QAAA,gqIb4MM,SAASC,EAAQD,EAASH,Gc5MhCA,EAAA,IAAAA,EAAA,MdkNM,SAASI,EAAQD,GelNvBC,EAAAD,QAAA;EfwNM,SAASC,EAAQD,EAASH,GgBxNhCA,EAAA,IAAAA,EAAA,MhB8NM,SAASI,EAAQD,GiB9NvBC,EAAAD,QAAA;EjBoOM,SAASC,EAAQD,EAASH,GkBpOhCA,EAAA,IAAAA,EAAA,MlB0OM,SAASI,EAAQD,GmB1OvBC,EAAAD,QAAA;EnBgPM,SAASC,EAAQD,EAASH,GoBhPhCA,EAAA,IAAAA,EAAA,MpBsPM,SAASI,EAAQD,GqBtPvBC,EAAAD,QAAA","file":"js/vendor.min.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId])\n/******/ \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n/******/ \t\twhile(callbacks.length)\n/******/ \t\t\tcallbacks.shift().call(null, __webpack_require__);\n/******/ \t\tif(moreModules[0]) {\n/******/ \t\t\tinstalledModules[0] = 0;\n/******/ \t\t\treturn __webpack_require__(0);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// object to store loaded and loading chunks\n/******/ \t// \"0\" means \"already loaded\"\n/******/ \t// Array means \"loading\", array contains callbacks\n/******/ \tvar installedChunks = {\n/******/ \t\t1:0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n/******/ \t\t// \"0\" is the signal for \"already loaded\"\n/******/ \t\tif(installedChunks[chunkId] === 0)\n/******/ \t\t\treturn callback.call(null, __webpack_require__);\n/******/\n/******/ \t\t// an array means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId] !== undefined) {\n/******/ \t\t\tinstalledChunks[chunkId].push(callback);\n/******/ \t\t} else {\n/******/ \t\t\t// start chunk loading\n/******/ \t\t\tinstalledChunks[chunkId] = [callback];\n/******/ \t\t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\t\tvar script = document.createElement('script');\n/******/ \t\t\tscript.type = 'text/javascript';\n/******/ \t\t\tscript.charset = 'utf-8';\n/******/ \t\t\tscript.async = true;\n/******/\n/******/ \t\t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".js/\" + ({\"0\":\"app\"}[chunkId]||chunkId) + \".min.js\";\n/******/ \t\t\thead.appendChild(script);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(18);\r\n\t__webpack_require__(21);\r\n\t__webpack_require__(23);\r\n\t__webpack_require__(25);\r\n\t__webpack_require__(27);\r\n\t__webpack_require__(29);\r\n\t__webpack_require__(31);\r\n\t__webpack_require__(33);\r\n\t__webpack_require__(35);\n\n/***/ },\n/* 1 */,\n/* 2 */,\n/* 3 */,\n/* 4 */,\n/* 5 */,\n/* 6 */,\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */,\n/* 11 */,\n/* 12 */,\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */,\n/* 17 */,\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(19)(__webpack_require__(20))\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t/*\r\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\t\tAuthor Tobias Koppers @sokra\r\n\t*/\r\n\tmodule.exports = function(src) {\r\n\t\tif (typeof execScript === \"function\")\r\n\t\t\texecScript(src);\r\n\t\telse\r\n\t\t\teval.call(null, src);\r\n\t}\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"(function(){var d;window.AmCharts?d=window.AmCharts:(d={},window.AmCharts=d,d.themes={},d.maps={},d.inheriting={},d.charts=[],d.onReadyArray=[],d.useUTC=!1,d.updateRate=60,d.uid=0,d.lang={},d.translations={},d.mapTranslations={},d.windows={},d.initHandlers=[]);d.Class=function(a){var b=function(){arguments[0]!==d.inheriting&&(this.events={},this.construct.apply(this,arguments))};a.inherits?(b.prototype=new a.inherits(d.inheriting),b.base=a.inherits.prototype,delete a.inherits):(b.prototype.createEvents=\\r\\nfunction(){for(var a=0,b=arguments.length;ad.IEversion&&0b)return a;h=-1;for(a=(k=a.split(/\\\\r\\\\n|\\\\n|\\\\r/)).length;++hb;k[h]+=d.trim(g.slice(0,f))+((g=g.slice(f)).length?c:\\\"\\\"))f=2==e||(f=g.slice(0,b+1).match(/\\\\S*(\\\\s)?$/))[1]?b:f.input.length-f[0].length||1==e&&b||f.input.length+(f=g.slice(b).match(/^\\\\S*/))[0].length;g=d.trim(g)}return k.join(c)};d.trim=function(a){return a.replace(/^[\\\\s\\\\uFEFF\\\\xA0]+|[\\\\s\\\\uFEFF\\\\xA0]+$/g,\\\"\\\")};d.wrappedText=function(a,b,c,e,h,f,g,k){var l=d.text(a,b,c,e,h,f,g);if(l){var m=l.getBBox();if(m.width>k){var n=\\\"\\\\n\\\";d.isModern||(n=\\\"
\\\");k=Math.floor(k/(m.width/\\r\\nb.length));2c&&(a=c);return a};d.isDefined=function(a){return void 0===a?!1:!0};d.stripNumbers=function(a){return a.replace(/[0-9]+/g,\\\"\\\")};d.roundTo=function(a,b){if(0>b)return a;var c=Math.pow(10,b);return Math.round(a*c)/c};d.toFixed=function(a,b){var c=String(Math.round(a*Math.pow(10,b)));if(0=g[b].contains){var l=a-Math.floor(a/g[b].contains)*g[b].contains;\\\"ss\\\"==b?(l=d.formatNumber(l,f),1==l.split(k)[0].length&&(l=\\\"0\\\"+l)):l=d.roundTo(l,f.precision);(\\\"mm\\\"==b||\\\"hh\\\"==b)&&10>l&&(l=\\\"0\\\"+l);c=l+\\\"\\\"+e[b]+\\\"\\\"+c;a=Math.floor(a/g[b].contains);b=g[b].nextInterval;return d.formatDuration(a,b,c,e,h,f)}\\\"ss\\\"==b&&(a=d.formatNumber(a,f),1==a.split(k)[0].length&&(a=\\\"0\\\"+\\r\\na));(\\\"mm\\\"==b||\\\"hh\\\"==b)&&10>a&&(a=\\\"0\\\"+a);c=a+\\\"\\\"+e[b]+\\\"\\\"+c;if(g[h].count>g[b].count)for(a=g[b].count;aa?\\\"-\\\":\\\"\\\";a=Math.abs(a);var k=String(a),l=!1;-1!=k.indexOf(\\\"e\\\")&&(l=!0);0<=c&&!l&&(k=\\r\\nd.toFixed(a,c));var m=\\\"\\\";if(l)m=k;else{var k=k.split(\\\".\\\"),l=String(k[0]),n;for(n=l.length;0<=n;n-=3)m=n!=l.length?0!==n?l.substring(n-3,n)+b+m:l.substring(n-3,n)+m:l.substring(n-3,n);void 0!==k[1]&&(m=m+f+k[1]);void 0!==c&&0=c.x-5&&a<=c.x+c.width+5&&b>=c.y-5&&b<=c.y+c.height+5?!0:!1};d.isPercents=function(a){if(-1!=String(a).indexOf(\\\"%\\\"))return!0};d.formatValue=function(a,b,c,e,h,f,g,k){if(b){void 0===h&&(h=\\\"\\\");var l;for(l=0;la&&(g=\\\"-\\\");a=Math.abs(a);if(1=b[k].number&&(l=a/b[k].number,m=Number(e.precision),1>m&&(m=1),c=d.roundTo(l,m),m=d.formatNumber(c,{precision:-1,decimalSeparator:e.decimalSeparator,thousandsSeparator:e.thousandsSeparator}),!h||l==c)){f=g+\\\"\\\"+m+\\\"\\\"+b[k].prefix;break}}else for(k=0;k\\\"==a&&(a=\\\"easeOutSine\\\");\\\"<\\\"==a&&(a=\\\"easeInSine\\\");\\\"elastic\\\"==a&&(a=\\\"easeOutElastic\\\");return a};d.getObjById=function(a,b){var c,e;for(e=0;e\\\"));return a};d.fixBrakes=function(a){if(d.isModern){var b=\\r\\nRegExp(\\\"
\\\",\\\"g\\\");a&&(a=a.replace(b,\\\"\\\\n\\\"))}else a=d.fixNewLines(a);return a};d.deleteObject=function(a,b){if(a){if(void 0===b||null===b)b=20;if(0!==b)if(\\\"[object Array]\\\"===Object.prototype.toString.call(a))for(var c=0;cb)return e/2*b*b+c;b--;return-e/2*(b*(b-2)-1)+c};d.easeInSine=function(a,b,c,e,d){return-e*Math.cos(b/d*(Math.PI/2))+e+c};d.easeOutSine=function(a,b,c,e,d){return e*Math.sin(b/d*(Math.PI/2))+c};d.easeOutElastic=function(a,b,c,e,d){a=1.70158;var f=0,g=e;if(0===b)return c;if(1==(b/=d))return c+e;f||(f=.3*d);gb?Math.abs(b)-1:Math.abs(b);var d;for(d=0;db?Number(\\\"0.\\\"+c+String(a)):Number(String(a)+c)};d.setCN=function(a,b,c,e){if(a.addClassNames&&b&&(b=b.node)&&c){var d=b.getAttribute(\\\"class\\\");a=a.classNamePrefix+\\\"-\\\";e&&(a=\\\"\\\");d?b.setAttribute(\\\"class\\\",\\r\\nd+\\\" \\\"+a+c):b.setAttribute(\\\"class\\\",a+c)}};d.parseDefs=function(a,b){for(var c in a){var e=typeof a[c];if(0a&&(a=3)):a=this.width/this.minHorizontalGap,this.gridCountR=Math.max(a,1)):this.gridCountR=this.gridCount;this.axisWidth=this.axisLine.axisWidth;this.addTitle()},setOrientation:function(a){this.orientation=a?\\\"H\\\":\\\"V\\\"},addTitle:function(){var a=this.title;this.titleLabel=null;if(a){var b=this.chart,c=this.titleColor;void 0===c&&(c=b.color);var e=this.titleFontSize;isNaN(e)&&(e=\\r\\nb.fontSize+1);a=d.text(b.container,a,c,b.fontFamily,e,this.titleAlign,this.titleBold);d.setCN(b,a,this.bcn+\\\"title\\\");this.titleLabel=a}},positionTitle:function(){var a=this.titleLabel;if(a){var b,c,e=this.labelsSet,h={};0\\r\\nthis.autoRotateCount&&!isNaN(this.autoRotateAngle)&&(this.labelRotationR=this.autoRotateAngle),a=k;a<=A;a++){p=q+z*(a+Math.floor((C-q)/z))-D;\\\"DD\\\"==B&&(p+=36E5);p=d.resetDateToMin(new Date(p),B,w,t).getTime();\\\"MM\\\"==B&&(h=(p-l)/z,1.5<=(p-l)/z&&(p=p-(h-1)*z+d.getPeriodDuration(\\\"DD\\\",3),p=d.resetDateToMin(new Date(p),B,1).getTime(),D+=z));h=(p-this.startTime)*this.stepWidth;if(\\\"radar\\\"==b.type){if(h=this.axisWidth-h,0>h||h>this.axisWidth)continue}else this.rotate?\\\"date\\\"==this.type&&\\\"middle\\\"==this.gridPosition&&\\r\\n(J=-z*this.stepWidth/2):\\\"date\\\"==this.type&&(h=this.axisWidth-h);f=!1;this.nextPeriod[g]&&(f=this.checkPeriodChange(this.nextPeriod[g],1,p,l,g));l=!1;f&&this.markPeriodChange?(f=this.dateFormatsObject[this.nextPeriod[g]],this.twoLineMode&&(f=this.dateFormatsObject[g]+\\\"\\\\n\\\"+f,f=d.fixBrakes(f)),l=!0):f=this.dateFormatsObject[g];r||(l=!1);this.currentDateFormat=f;f=d.formatDate(new Date(p),f,b);if(a==k&&!c||a==A&&!e)f=\\\" \\\";this.labelFunction&&(f=this.labelFunction(f,new Date(p),this,B,w,m).toString());\\r\\nthis.boldLabels&&(l=!0);m=new this.axisItemRenderer(this,h,f,!1,n,J,!1,l);this.pushAxisItem(m);m=l=p;if(!isNaN(u))for(h=1;hb||b>this.height)return;if(isNaN(b)){this.hideBalloon();return}b=this.adjustBalloonCoordinate(b,e);e=this.coordinateToValue(b)}else{if(0>a||a>this.width)return;if(isNaN(a)){this.hideBalloon();return}a=this.adjustBalloonCoordinate(a,e);e=this.coordinateToValue(a)}var f;if(d=this.chart.chartCursor)f=\\r\\nd.index;this.balloon&&void 0!==e&&this.balloon.enabled&&(this.balloonTextFunction?e=this.balloonTextFunction(e):this.balloonText?e=this.formatBalloonText(this.balloonText,f,c):isNaN(e)||(e=this.formatValue(e,c)),a!=this.prevBX||b!=this.prevBY)&&(this.balloon.setPosition(a,b),this.prevBX=a,this.prevBY=b,e&&this.balloon.showBalloon(e))},adjustBalloonCoordinate:function(a){return a},createBalloon:function(){var a=this.chart,b=a.chartCursor;b&&(b=b.cursorPosition,\\\"mouse\\\"!=b&&(this.stickBalloonToCategory=\\r\\n!0),\\\"start\\\"==b&&(this.stickBalloonToStart=!0),\\\"ValueAxis\\\"==this.cname&&(this.stickBalloonToCategory=!1));this.balloon&&(this.balloon.destroy&&this.balloon.destroy(),d.extend(this.balloon,a.balloon,!0))},setBalloonBounds:function(){var a=this.balloon;if(a){var b=this.chart;a.cornerRadius=0;a.shadowAlpha=0;a.borderThickness=1;a.borderAlpha=1;a.adjustBorderColor=!1;a.showBullet=!1;this.balloon=a;a.chart=b;a.mainSet=b.plotBalloonsSet;a.pointerWidth=this.tickLength;if(this.parseDates||\\\"date\\\"==this.type)a.pointerWidth=\\r\\n0;b=\\\"V\\\";\\\"V\\\"==this.orientation&&(b=\\\"H\\\");this.stickBalloonToCategory||(a.animationDuration=0);var c,e,d,f,g=this.inside,k=this.width,l=this.height;switch(this.position){case \\\"bottom\\\":c=0;e=k;g?(d=0,f=l):(d=l,f=l+1E3);break;case \\\"top\\\":c=0;e=k;g?(d=0,f=l):(d=-1E3,f=0);break;case \\\"left\\\":d=0;f=l;g?(c=0,e=k):(c=-1E3,e=0);break;case \\\"right\\\":d=0,f=l,g?(c=0,e=k):(c=k,e=k+1E3)}a.drop||(a.pointerOrientation=b);a.setBounds(c,d,e,f)}}})})();(function(){var d=window.AmCharts;d.ValueAxis=d.Class({inherits:d.AxisBase,construct:function(a){this.cname=\\\"ValueAxis\\\";this.createEvents(\\\"axisChanged\\\",\\\"logarithmicAxisFailed\\\",\\\"axisZoomed\\\");d.ValueAxis.base.construct.call(this,a);this.dataChanged=!0;this.stackType=\\\"none\\\";this.position=\\\"left\\\";this.unitPosition=\\\"right\\\";this.includeAllValues=this.recalculateToPercents=this.includeHidden=this.includeGuidesInMinMax=this.integersOnly=!1;this.durationUnits={DD:\\\"d. \\\",hh:\\\":\\\",mm:\\\":\\\",ss:\\\"\\\"};this.scrollbar=!1;\\r\\nthis.baseValue=0;this.radarCategoriesEnabled=!0;this.gridType=\\\"polygons\\\";this.useScientificNotation=!1;this.axisTitleOffset=10;this.pointPosition=\\\"axis\\\";this.minMaxMultiplier=1;this.logGridLimit=2;this.totalTextOffset=this.treatZeroAs=0;this.minPeriod=\\\"ss\\\";this.relativeStart=0;this.relativeEnd=1;d.applyTheme(this,a,this.cname)},updateData:function(){0>=this.gridCountR&&(this.gridCountR=1);this.totals=[];this.data=this.chart.chartData;var a=this.chart;\\\"xy\\\"!=a.type&&(this.stackGraphs(\\\"smoothedLine\\\"),\\r\\nthis.stackGraphs(\\\"line\\\"),this.stackGraphs(\\\"column\\\"),this.stackGraphs(\\\"step\\\"));this.recalculateToPercents&&this.recalculate();this.synchronizationMultiplier&&this.synchronizeWith?(d.isString(this.synchronizeWith)&&(this.synchronizeWith=a.getValueAxisById(this.synchronizeWith)),this.synchronizeWith&&(this.synchronizeWithAxis(this.synchronizeWith),this.foundGraphs=!0)):(this.foundGraphs=!1,this.getMinMax(),0===this.start&&this.end==this.data.length-1&&isNaN(this.minZoom)&&isNaN(this.maxZoom)&&(this.fullMin=\\r\\nthis.min,this.fullMax=this.max,\\\"date\\\"!=this.type&&(isNaN(this.minimum)||(this.fullMin=this.minimum),isNaN(this.maximum)||(this.fullMax=this.maximum)),this.logarithmic&&(this.fullMin=this.logMin,0===this.fullMin&&(this.fullMin=this.treatZeroAs)),\\\"date\\\"==this.type&&(this.minimumDate||(this.fullMin=this.minRR),this.maximumDate||(this.fullMax=this.maxRR))))},draw:function(){d.ValueAxis.base.draw.call(this);var a=this.chart,b=this.set;this.labelRotationR=this.labelRotation;d.setCN(a,this.set,\\\"value-axis value-axis-\\\"+\\r\\nthis.id);d.setCN(a,this.labelsSet,\\\"value-axis value-axis-\\\"+this.id);d.setCN(a,this.axisLine.axisSet,\\\"value-axis value-axis-\\\"+this.id);var c=this.type;\\\"duration\\\"==c&&(this.duration=\\\"ss\\\");!0===this.dataChanged&&(this.updateData(),this.dataChanged=!1);\\\"date\\\"==c&&(this.logarithmic=!1,this.min=this.minRR,this.max=this.maxRR,this.reversed=!1,this.getDateMinMax());if(this.logarithmic){var e=this.treatZeroAs,h=this.getExtremes(0,this.data.length-1).min;this.logMin=h;this.minReal=h||0>=this.minimum){this.fire({type:\\\"logarithmicAxisFailed\\\",chart:a});return}}this.grid0=null;var f,g,k=a.dx,l=a.dy,e=!1,h=this.logarithmic;if(isNaN(this.min)||isNaN(this.max)||!this.foundGraphs||Infinity==this.min||-Infinity==this.max)e=!0;else{var m=this.labelFrequency,n=this.showFirstLabel,q=this.showLastLabel,p=1;f=0;this.minCalc=this.min;this.maxCalc=this.max;this.strictMinMax&&(isNaN(this.minimum)||(this.min=this.minimum),isNaN(this.maximum)||\\r\\n(this.max=this.maximum));isNaN(this.minZoom)||(this.minReal=this.min=this.minZoom);isNaN(this.maxZoom)||(this.max=this.maxZoom);if(this.logarithmic){var t=Math.log(this.fullMax)*Math.LOG10E-Math.log(this.fullMin)*Math.LOG10E,r=Math.log(this.max)/Math.LN10-Math.log(this.fullMin)*Math.LOG10E;this.relativeStart=(Math.log(this.minReal)/Math.LN10-Math.log(this.fullMin)*Math.LOG10E)/t;this.relativeEnd=r/t}else this.relativeStart=d.fitToBounds((this.min-this.fullMin)/(this.fullMax-this.fullMin),0,1),this.relativeEnd=\\r\\nd.fitToBounds((this.max-this.fullMin)/(this.fullMax-this.fullMin),0,1);var t=Math.round((this.maxCalc-this.minCalc)/this.step)+1,u;!0===h?(u=Math.log(this.max)*Math.LOG10E-Math.log(this.minReal)*Math.LOG10E,this.stepWidth=this.axisWidth/u,u>this.logGridLimit&&(t=Math.ceil(Math.log(this.max)*Math.LOG10E)+1,f=Math.round(Math.log(this.minReal)*Math.LOG10E),t>this.gridCountR&&(p=Math.ceil(t/this.gridCountR)))):this.stepWidth=this.axisWidth/(this.max-this.min);var y=0;1>this.step&&-1this.maxDecCount&&(y=this.maxDecCount);r=this.precision;isNaN(r)||(y=r);isNaN(this.maxZoom)&&(this.max=d.roundTo(this.max,this.maxDecCount),this.min=d.roundTo(this.min,this.maxDecCount));g={};g.precision=y;g.decimalSeparator=a.nf.decimalSeparator;g.thousandsSeparator=a.nf.thousandsSeparator;this.numberFormatter=g;var x,w=this.guides,B=w.length;if(0=this.autoRotateCount&&!isNaN(this.autoRotateAngle)&&(this.labelRotationR=\\r\\nthis.autoRotateAngle),h&&t++,g=f;gthis.logGridLimit&&(c=Math.pow(10,g)));x=this.formatValue(c,!1,g);Math.round(g/m)!=g/m&&(x=void 0);if(0===g&&!n||g==t-1&&!q)x=\\\" \\\";f=this.getCoordinate(c);var R;this.rotate&&this.autoWrap&&(R=this.stepWidth*y-10);x=new this.axisItemRenderer(this,f,x,void 0,R,void 0,void 0,this.boldLabels);this.pushAxisItem(x);\\r\\nif(c==this.baseValue&&\\\"radar\\\"!=a.type){var L,P;x=this.width;B=this.height;\\\"H\\\"==this.orientation?0<=f&&f<=x+1&&(L=[f,f,f+k],P=[B,0,l]):0<=f&&f<=B+1&&(L=[0,x,x+k],P=[f,f,f+l]);L&&(f=d.fitToBounds(2*this.gridAlpha,0,1),isNaN(this.zeroGridAlpha)||(f=this.zeroGridAlpha),f=d.line(a.container,L,P,this.gridColor,f,1,this.dashLength),f.translate(this.x,this.y),this.grid0=f,a.axesSet.push(f),f.toBack(),d.setCN(a,f,this.bcn+\\\"zero-grid-\\\"+this.id),d.setCN(a,f,this.bcn+\\\"zero-grid\\\"))}if(!isNaN(H)&&0this.logGridLimit&&(H=Math.pow(10,g+p)),f=10,H=(H-c)/f);x=this.gridAlpha;this.gridAlpha=this.minorGridAlpha;for(B=1;Bthis.baseValue&&this.max>this.baseValue&&(u=this.min);this.minc&&(f.precision=Math.abs(c)),b&&1b&&c.shift();for(var e=Math.floor(Math.log(Math.abs(a))*Math.LOG10E),d=0;da){if(g=Math.pow(10,-g)*f,g==Math.round(g))return f}else if(f==Math.round(f))return f}},stackGraphs:function(a){var b=this.stackType;\\\"stacked\\\"==b&&(b=\\\"regular\\\");\\\"line\\\"==b&&(b=\\\"none\\\");\\\"100% stacked\\\"==b&&(b=\\\"100%\\\");this.stackType=b;var c=[],e=[],h=[],f=[],g,k=this.chart.graphs,l,m,n,q,p,t=this.baseValue,r=!1;if(\\\"line\\\"==a||\\\"step\\\"==a||\\\"smoothedLine\\\"==a)r=!0;if(r&&(\\\"regular\\\"==b||\\\"100%\\\"==b))for(q=0;qg?(m.values.close=g,isNaN(e[p])?m.values.open=t:(m.values.close+=e[p],m.values.open=e[p]),e[p]=m.values.close):(m.values.close=\\r\\ng,isNaN(h[p])?m.values.open=t:(m.values.close+=h[p],m.values.open=h[p]),h[p]=m.values.close)))}}for(p=this.start;p<=this.end;p++)for(q=0;qc?(m.values.close=\\r\\nd.fitToBounds(c+e[p],-100,100),m.values.open=e[p],e[p]=m.values.close):(m.values.close=d.fitToBounds(c+h[p],-100,100),m.values.open=h[p],h[p]=m.values.close)))))},recalculate:function(){var a=this.chart,b=a.graphs,c;for(c=0;cq&&g++}if(m=a.recalculateFromDate)m=d.getDate(m,a.dataDateFormat,\\\"fff\\\"),g=a.getClosestIndex(a.chartData,\\\"time\\\",m.getTime(),!0,0,a.chartData.length),k=a.chartData.length-1;for(m=g;m<=k&&(g=this.data[m].axes[this.id].graphs[e.id],f=g.values[h],e.recalculateValue&&(f=g.dataContext[e.valueField+e.recalculateValue]),isNaN(f));m++);\\r\\nthis.recBaseValue=f;for(h=l;h<=k;h++){g=this.data[h].axes[this.id].graphs[e.id];g.percents={};var l=g.values,p;for(p in l)g.percents[p]=\\\"percents\\\"!=p?l[p]/f*100-100:l[p]}}}},getMinMax:function(){var a=!1,b=this.chart,c=b.graphs,e;for(e=0;ethis.max&&(this.max=c.toValue),c.value>this.max&&(this.max=c.value);isNaN(this.minimum)||\\r\\n(this.min=this.minimum);isNaN(this.maximum)||(this.max=this.maximum);\\\"date\\\"==this.type&&this.getDateMinMax();this.min>this.max&&(a=this.max,this.max=this.min,this.min=a);isNaN(this.minZoom)||(this.min=this.minZoom);isNaN(this.maxZoom)||(this.max=this.maxZoom);this.minCalc=this.min;this.maxCalc=this.max;this.minReal=this.min;this.maxReal=this.max;0===this.min&&0===this.max&&(this.max=9);this.min>this.max&&(this.min=this.max-1);a=this.min;b=this.max;c=this.max-this.min;e=0===c?Math.pow(10,Math.floor(Math.log(Math.abs(this.max))*\\r\\nMath.LOG10E))/10:Math.pow(10,Math.floor(Math.log(Math.abs(c))*Math.LOG10E))/10;isNaN(this.maximum)&&(this.max=Math.ceil(this.max/e)*e+e);isNaN(this.minimum)&&(this.min=Math.floor(this.min/e)*e-e);0>this.min&&0<=a&&(this.min=0);0=b&&(this.max=0);\\\"100%\\\"==this.stackType&&(this.min=0>this.min?-100:0,this.max=0>this.max?0:100);c=this.max-this.min;e=Math.pow(10,Math.floor(Math.log(Math.abs(c))*Math.LOG10E))/10;this.step=Math.ceil(c/this.gridCountR/e)*e;c=Math.pow(10,Math.floor(Math.log(Math.abs(this.step))*\\r\\nMath.LOG10E));c=d.fixStepE(c);e=Math.ceil(this.step/c);5=e&&2c?(this.maxDecCount=Math.abs(Math.log(Math.abs(c))*Math.LOG10E),this.maxDecCount=Math.round(this.maxDecCount),this.step=d.roundTo(this.step,this.maxDecCount+1)):this.maxDecCount=0;this.min=this.step*Math.floor(this.min/this.step);this.max=this.step*Math.ceil(this.max/this.step);0>this.min&&0<=a&&(this.min=0);0=b&&(this.max=0);1e&&(e=l);else for(var m in k)k.hasOwnProperty(m)&&\\\"percents\\\"!=m&&\\\"total\\\"!=m&&(l=k[m],le&&(e=l))}}}return{min:c,max:e}},zoomOut:function(){this.zoomToRelativeValues(0,1);this.maxZoom=this.minZoom=NaN},zoomToRelativeValues:function(a,b,c){if(this.reversed){var e=a;a=1-b;b=1-e}var d=this.fullMax,e=this.fullMin,f=e+(d-e)*a,g=e+(d-e)*b;this.logarithmic&&(d=Math.log(d)*Math.LOG10E-Math.log(e)*Math.LOG10E,f=Math.pow(10,\\r\\nd*a+Math.log(e)*Math.LOG10E),g=Math.pow(10,d*b+Math.log(e)*Math.LOG10E));return this.zoomToValues(f,g,c)},zoomToValues:function(a,b,c){if(bn?(v=X+ha*Math.sin(T)-A-3+2,G+=-ha*Math.cos(T)-Pa*Math.sin(T)-4):v-=A+r+3+3,v-=Z):(0n?(v=X+A+3-ha/2*Math.sin(T)+2,G+=ha/2*Math.cos(T)):v+=A+w+3+3,v+=Z)):(v+=la+r/2-da,G+=va,I?(0ya+2||0>f))ba.remove(),ba=null}else{0<=b&&b<=X+1&&(0X+1||vc&&\\\"object\\\"==typeof n&&(n=n.join(\\\",\\\").split(\\\",\\\").reverse());\\\"V\\\"==g?(g=d.rect(l,a.width,c,n,m),g.translate(h,b-k+f)):(g=d.rect(l,\\r\\nc,a.height,n,m),g.translate(b-k+h,f));d.setCN(a.chart,g,\\\"guide-fill\\\");e.id&&d.setCN(a.chart,g,\\\"guide-fill-\\\"+e.id);this.set=l.set([g])},graphics:function(){return this.set},getLabel:function(){}})})();(function(){var d=window.AmCharts;d.AmChart=d.Class({construct:function(a){this.svgIcons=this.tapToActivate=!0;this.theme=a;this.classNamePrefix=\\\"amcharts\\\";this.addClassNames=!1;this.version=\\\"3.18.6\\\";d.addChart(this);this.createEvents(\\\"buildStarted\\\",\\\"dataUpdated\\\",\\\"init\\\",\\\"rendered\\\",\\\"drawn\\\",\\\"failed\\\",\\\"resized\\\",\\\"animationFinished\\\");this.height=this.width=\\\"100%\\\";this.dataChanged=!0;this.chartCreated=!1;this.previousWidth=this.previousHeight=0;this.backgroundColor=\\\"#FFFFFF\\\";this.borderAlpha=this.backgroundAlpha=\\r\\n0;this.color=this.borderColor=\\\"#000000\\\";this.fontFamily=\\\"Verdana\\\";this.fontSize=11;this.usePrefixes=!1;this.autoResize=!0;this.autoDisplay=!1;this.addCodeCredits=!0;this.precision=-1;this.percentPrecision=2;this.decimalSeparator=\\\".\\\";this.thousandsSeparator=\\\",\\\";this.labels=[];this.allLabels=[];this.titles=[];this.marginRight=this.marginLeft=this.autoMarginOffset=0;this.timeOuts=[];this.creditsPosition=\\\"top-left\\\";var b=document.createElement(\\\"div\\\"),c=b.style;c.overflow=\\\"hidden\\\";c.position=\\\"relative\\\";\\r\\nc.textAlign=\\\"left\\\";this.chartDiv=b;b=document.createElement(\\\"div\\\");c=b.style;c.overflow=\\\"hidden\\\";c.position=\\\"relative\\\";c.textAlign=\\\"left\\\";this.legendDiv=b;this.titleHeight=0;this.hideBalloonTime=150;this.handDrawScatter=2;this.handDrawThickness=1;this.prefixesOfBigNumbers=[{number:1E3,prefix:\\\"k\\\"},{number:1E6,prefix:\\\"M\\\"},{number:1E9,prefix:\\\"G\\\"},{number:1E12,prefix:\\\"T\\\"},{number:1E15,prefix:\\\"P\\\"},{number:1E18,prefix:\\\"E\\\"},{number:1E21,prefix:\\\"Z\\\"},{number:1E24,prefix:\\\"Y\\\"}];this.prefixesOfSmallNumbers=[{number:1E-24,\\r\\nprefix:\\\"y\\\"},{number:1E-21,prefix:\\\"z\\\"},{number:1E-18,prefix:\\\"a\\\"},{number:1E-15,prefix:\\\"f\\\"},{number:1E-12,prefix:\\\"p\\\"},{number:1E-9,prefix:\\\"n\\\"},{number:1E-6,prefix:\\\"\\\\u03bc\\\"},{number:.001,prefix:\\\"m\\\"}];this.panEventsEnabled=!0;this.product=\\\"amcharts\\\";this.animations=[];this.balloon=new d.AmBalloon(this.theme);this.balloon.chart=this;this.processTimeout=0;this.processCount=1E3;this.animatable=[];d.applyTheme(this,a,\\\"AmChart\\\")},drawChart:function(){0a||isNaN(a))a=0;this.chartDiv.style.height=a+\\\"px\\\"}}return a},updateWidth:function(){var a=this.divRealWidth,\\r\\nb=this.divRealHeight,c=this.legend;if(c){var e=this.legendDiv,d=e.offsetWidth;isNaN(c.width)||(d=c.width);c.ieW&&(d=c.ieW);var f=e.offsetHeight,e=e.style,g=this.chartDiv.style,c=c.position;if(\\\"right\\\"==c||\\\"left\\\"==c){a-=d;if(0>a||isNaN(a))a=0;g.width=a+\\\"px\\\";this.balloon.setBounds(2,2,a-2,this.realHeight);\\\"left\\\"==c?(g.left=d+\\\"px\\\",e.left=\\\"0px\\\"):(g.left=\\\"0px\\\",e.left=a+\\\"px\\\");b>f&&(e.top=(b-f)/2+\\\"px\\\")}}return a},getTitleHeight:function(){this.drawTitles(!0);return this.titleHeight},addTitle:function(a,b,\\r\\nc,e,d){isNaN(b)&&(b=this.fontSize+2);a={text:a,size:b,color:c,alpha:e,bold:d,enabled:!0};this.titles.push(a);return a},handleWheel:function(a){var b=0;a||(a=window.event);a.wheelDelta?b=a.wheelDelta/120:a.detail&&(b=-a.detail/3);b&&this.handleWheelReal(b,a.shiftKey);a.preventDefault&&a.preventDefault()},handleWheelReal:function(){},handleDocTouchStart:function(){this.hideBalloonReal();this.handleMouseMove();this.tmx=this.mouseX;this.tmy=this.mouseY},handleDocTouchEnd:function(){-.5Math.abs(this.mouseX-this.tmx)&&4>Math.abs(this.mouseY-this.tmy)&&(this.tapped=!0)):this.tapped=!1},addListeners:function(){var a=this,b=a.chartDiv;document.addEventListener?(a.panEventsEnabled&&(b.style.msTouchAction=\\\"none\\\",b.style.touchAction=\\\"none\\\"),\\\"ontouchstart\\\"in document.documentElement&&(b.addEventListener(\\\"touchstart\\\",function(b){a.handleTouchStart.call(a,b)},!0),b.addEventListener(\\\"touchmove\\\",function(b){a.handleMouseMove.call(a,\\r\\nb)},!0),b.addEventListener(\\\"touchend\\\",function(b){a.handleTouchEnd.call(a,b)},!0),document.addEventListener(\\\"touchstart\\\",function(b){a.handleDocTouchStart.call(a,b)}),document.addEventListener(\\\"touchend\\\",function(b){a.handleDocTouchEnd.call(a,b)})),b.addEventListener(\\\"mousedown\\\",function(b){a.mouseIsOver=!0;a.handleMouseMove.call(a,b);a.handleMouseDown.call(a,b)},!0),b.addEventListener(\\\"mouseover\\\",function(b){a.handleMouseOver.call(a,b)},!0),b.addEventListener(\\\"mouseout\\\",function(b){a.handleMouseOut.call(a,\\r\\nb)},!0)):(b.attachEvent(\\\"onmousedown\\\",function(b){a.handleMouseDown.call(a,b)}),b.attachEvent(\\\"onmouseover\\\",function(b){a.handleMouseOver.call(a,b)}),b.attachEvent(\\\"onmouseout\\\",function(b){a.handleMouseOut.call(a,b)}))},dispDUpd:function(){this.skipEvents||(this.dispatchDataUpdated&&(this.dispatchDataUpdated=!1,this.fire({type:\\\"dataUpdated\\\",chart:this})),this.chartCreated||(this.chartCreated=!0,this.fire({type:\\\"init\\\",chart:this})),this.chartRendered||(this.fire({type:\\\"rendered\\\",chart:this}),this.chartRendered=\\r\\n!0),this.fire({type:\\\"drawn\\\",chart:this}));this.skipEvents=!1},validateSize:function(){var a=this;a.premeasure();a.checkDisplay();if(a.divRealWidth!=a.previousWidth||a.divRealHeight!=a.previousHeight){var b=a.legend;if(0a.valueAxis.minMaxMultiplier&&a.positiveClip(a.set));break;case \\\"radar\\\":a.createRadarGraph();break;case \\\"xy\\\":a.createXYGraph(),a.positiveClip(a.set)}a.playedTO=setTimeout(function(){a.setAnimationPlayed.call(a)},500*a.chart.startDuration)}},setAnimationPlayed:function(){this.animationPlayed=!0},createXYGraph:function(){var a=[],b=[],c=this.xAxis,e=this.yAxis;this.pmh=e.height;this.pmw=\\r\\nc.width;this.pmy=this.pmx=0;var d;for(d=this.start;d<=this.end;d++){var f=this.data[d].axes[c.id].graphs[this.id],g=f.values,k=g.x,l=g.y,g=c.getCoordinate(k,this.noRounding),m=e.getCoordinate(l,this.noRounding);if(!isNaN(k)&&!isNaN(l)&&(a.push(g),b.push(m),f.x=g,f.y=m,k=this.createBullet(f,g,m,d),l=this.labelText)){var l=this.createLabel(f,l),n=0;k&&(n=k.size);this.positionLabel(f,g,m,l,n)}}this.drawLineGraph(a,b);this.launchAnimation()},createRadarGraph:function(){var a=this.valueAxis.stackType,\\r\\nb=[],c=[],e=[],d=[],f,g,k,l,m;for(m=this.start;m<=this.end;m++){var n=this.data[m].axes[this.valueAxis.id].graphs[this.id],q,p;\\\"none\\\"==a||\\\"3d\\\"==a?q=n.values.value:(q=n.values.close,p=n.values.open);if(isNaN(q))this.connect||(this.drawLineGraph(b,c,e,d),b=[],c=[],e=[],d=[]);else{var t=this.valueAxis.getCoordinate(q,this.noRounding)-this.height,t=t*this.valueAxis.rMultiplier,r=-360/(this.end-this.start+1)*m;\\\"middle\\\"==this.valueAxis.pointPosition&&(r-=180/(this.end-this.start+1));q=t*Math.sin(r/180*\\r\\nMath.PI);t*=Math.cos(r/180*Math.PI);b.push(q);c.push(t);if(!isNaN(p)){var u=this.valueAxis.getCoordinate(p,this.noRounding)-this.height,u=u*this.valueAxis.rMultiplier,y=u*Math.sin(r/180*Math.PI),r=u*Math.cos(r/180*Math.PI);e.push(y);d.push(r);isNaN(k)&&(k=y);isNaN(l)&&(l=r)}r=this.createBullet(n,q,t,m);n.x=q;n.y=t;if(y=this.labelText)y=this.createLabel(n,y),u=0,r&&(u=r.size),this.positionLabel(n,q,t,y,u);isNaN(f)&&(f=q);isNaN(g)&&(g=t)}}b.push(f);c.push(g);isNaN(k)||(e.push(k),d.push(l));this.drawLineGraph(b,\\r\\nc,e,d);this.launchAnimation()},positionLabel:function(a,b,c,e,d){if(e){var f=this.chart,g=this.valueAxis,k=\\\"middle\\\",l=!1,m=this.labelPosition,n=e.getBBox(),q=this.chart.rotate,p=a.isNegative;c-=n.height/4/2;void 0!==a.labelIsNegative&&(p=a.labelIsNegative);switch(m){case \\\"right\\\":m=q?p?\\\"left\\\":\\\"right\\\":\\\"right\\\";break;case \\\"top\\\":m=q?\\\"top\\\":p?\\\"bottom\\\":\\\"top\\\";break;case \\\"bottom\\\":m=q?\\\"bottom\\\":p?\\\"top\\\":\\\"bottom\\\";break;case \\\"left\\\":m=q?p?\\\"right\\\":\\\"left\\\":\\\"left\\\"}var t=a.columnGraphics,r=0,u=0;t&&(r=t.x,u=t.y);var y=\\r\\nthis.labelOffset;switch(m){case \\\"right\\\":k=\\\"start\\\";b+=d/2+y;break;case \\\"top\\\":c=g.reversed?c+(d/2+n.height/2+y):c-(d/2+n.height/2+y);break;case \\\"bottom\\\":c=g.reversed?c-(d/2+n.height/2+y):c+(d/2+n.height/2+y);break;case \\\"left\\\":k=\\\"end\\\";b-=d/2+y;break;case \\\"inside\\\":\\\"column\\\"==this.type&&(l=!0,q?p?(k=\\\"end\\\",b=r-3-y):(k=\\\"start\\\",b=r+3+y):c=p?u+7+y:u-10-y);break;case \\\"middle\\\":\\\"column\\\"==this.type&&(l=!0,q?b-=(b-r)/2+y-3:c-=(c-u)/2+y-3)}\\\"auto\\\"!=this.labelAnchor&&(k=this.labelAnchor);e.attr({\\\"text-anchor\\\":k});\\r\\nthis.labelRotation&&e.rotate(this.labelRotation);e.translate(b,c);!this.showAllValueLabels&&t&&l&&(n=e.getBBox(),n.height>a.columnHeight||n.width>a.columnWidth)&&(e.remove(),e=null);e&&(0>b||b>this.width||0>c||c>this.height)&&(e.remove(),e=null);if(e&&(\\\"serial\\\"==f.type||\\\"gantt\\\"==f.type))if(q){if(0>c||c>this.height)e.remove(),e=null}else if(0>b||b>this.width)e.remove(),e=null;e&&this.allBullets.push(e);return e}},getGradRotation:function(){var a=270;\\\"horizontal\\\"==this.gradientOrientation&&(a=0);return this.gradientRotation=\\r\\na},createSerialGraph:function(){this.dashLengthSwitched=this.fillColorsSwitched=this.lineColorSwitched=void 0;var a=this.chart,b=this.id,c=this.index,e=this.data,h=this.chart.container,f=this.valueAxis,g=this.type,k=this.columnWidthReal,l=this.showBulletsAt;isNaN(this.columnWidth)||(k=this.columnWidth);isNaN(k)&&(k=.8);var m=this.useNegativeColorIfDown,n=this.width,q=this.height,p=this.y,t=this.rotate,r=this.columnCount,u=d.toCoordinate(this.cornerRadiusTop,k/2),y=this.connect,x=[],w=[],B,z,A,C,D=\\r\\nthis.chart.graphs.length,J,H=this.dx/this.tcc,R=this.dy/this.tcc,L=f.stackType,P=this.start,ia=this.end,I=this.scrollbar,Z=\\\"graph-column-\\\";I&&(Z=\\\"scrollbar-graph-column-\\\");var va=this.categoryAxis,la=this.baseCoord,Oa=this.negativeBase,ea=this.columnIndex,ca=this.lineThickness,X=this.lineAlpha,ya=this.lineColorR,da=this.dashLength,fa=this.set,za,ga=this.getGradRotation(),T=this.chart.columnSpacing,Y=va.cellWidth,Ca=(Y*k-r)/r;T>Ca&&(T=Ca);var G,v,ma,ha=q,Pa=n,ba=0,tb=0,ub,vb,gb,hb,wb=this.fillColorsR,\\r\\nQa=this.negativeFillColors,Ja=this.negativeLineColor,Ya=this.fillAlphas,Za=this.negativeFillAlphas;\\\"object\\\"==typeof Ya&&(Ya=Ya[0]);\\\"object\\\"==typeof Za&&(Za=Za[0]);var xb=this.noRounding;\\\"step\\\"==g&&(xb=!1);var ib=f.getCoordinate(f.min);f.logarithmic&&(ib=f.getCoordinate(f.minReal));this.minCoord=ib;this.resetBullet&&(this.bullet=\\\"none\\\");if(!(I||\\\"line\\\"!=g&&\\\"smoothedLine\\\"!=g&&\\\"step\\\"!=g||(1==e.length&&\\\"step\\\"!=g&&\\\"none\\\"==this.bullet&&(this.bullet=\\\"round\\\",this.resetBullet=!0),!Qa&&void 0==Ja||m))){var Ua=\\r\\nOa;Ua>f.max&&(Ua=f.max);Uak&&(k=1);var Ob=this.fixedColumnWidth;isNaN(Ob)||(k=Ob);var M;if(\\\"line\\\"==g||\\\"step\\\"==g||\\\"smoothedLine\\\"==g){if(0W?!0:!1);if(!I)switch(this.showBalloonAt){case \\\"close\\\":v.y=F;break;case \\\"open\\\":v.y=N;break;case \\\"high\\\":v.y=sa;break;case \\\"low\\\":v.y=qa}var na=G.x[va.id],Wa=this.periodSpan-1;\\\"step\\\"!=g||isNaN(G.cellWidth)||(Y=G.cellWidth);var xa=Math.floor(Y/2)+Math.floor(Wa*Y/2),Ga=xa,nb=0;\\\"left\\\"==this.stepDirection&&(nb=(2*Y+Wa*Y)/2,na-=nb);\\\"center\\\"==this.stepDirection&&(nb=Y/2,na-=nb);\\\"start\\\"==this.pointPosition&&(na-=Y/2+Math.floor(Wa*Y/2),xa=0,Ga=Math.floor(Y)+\\r\\nMath.floor(Wa*Y));\\\"end\\\"==this.pointPosition&&(na+=Y/2+Math.floor(Wa*Y/2),xa=Math.floor(Y)+Math.floor(Wa*Y),Ga=0);if(Pb){var Eb=this.columnWidth;isNaN(Eb)||(xa*=Eb,Ga*=Eb)}I||(v.x=na);-1E5>na&&(na=-1E5);na>n+1E5&&(na=n+1E5);t?(E=F,O=N,N=F=na,isNaN(ta)&&!this.fillToGraph&&(O=la),pa=qa,ra=sa):(O=E=na,isNaN(ta)&&!this.fillToGraph&&(N=la));if(!Db&&WTa?(Sa&&($a=!0),Sa=!1):(Sa||($a=!0),Sa=!0):v.isNegative=W=lb||Math.abs(F-kb)>=lb)x.push(E),w.push(F),jb=E,kb=F;wa=E;Da=F;ja=E;ka=F;!Ra||isNaN(N)||isNaN(O)||(U.push(O),V.push(N));if($a||void 0!=v.lineColor&&v.lineColor!=this.lineColorSwitched||void 0!=v.fillColors&&v.fillColors!=this.fillColorsSwitched||!isNaN(v.dashLength))this.drawLineGraph(x,\\r\\nw,U,V),x=[E],w=[F],U=[],V=[],!Ra||isNaN(N)||isNaN(O)||(U.push(O),V.push(N)),m?Sa?(this.lineColorSwitched=ya,this.fillColorsSwitched=wb):(this.lineColorSwitched=Ja,this.fillColorsSwitched=Qa):(this.lineColorSwitched=v.lineColor,this.fillColorsSwitched=v.fillColors),this.dashLengthSwitched=v.dashLength;v.gap&&(this.drawLineGraph(x,w,U,V),x=[],w=[],U=[],V=[])}break;case \\\"smoothedLine\\\":if(isNaN(W))y||(this.drawSmoothedGraph(x,w,U,V),x=[],w=[],U=[],V=[]);else{if(Math.abs(E-jb)>=lb||Math.abs(F-kb)>=lb)x.push(E),\\r\\nw.push(F),jb=E,kb=F;wa=E;Da=F;ja=E;ka=F;!Ra||isNaN(N)||isNaN(O)||(U.push(O),V.push(N));void 0==v.lineColor&&void 0==v.fillColors&&isNaN(v.dashLength)||(this.drawSmoothedGraph(x,w,U,V),x=[E],w=[F],U=[],V=[],!Ra||isNaN(N)||isNaN(O)||(U.push(O),V.push(N)),this.lineColorSwitched=v.lineColor,this.fillColorsSwitched=v.fillColors,this.dashLengthSwitched=v.dashLength);v.gap&&(this.drawSmoothedGraph(x,w,U,V),x=[],w=[],U=[],V=[])}break;case \\\"step\\\":if(!isNaN(W)){t?(isNaN(B)||(x.push(B),w.push(F-xa)),w.push(F-\\r\\nxa),x.push(E),w.push(F+Ga),x.push(E),!Ra||isNaN(N)||isNaN(O)||(isNaN(A)||(U.push(A),V.push(N-xa)),U.push(O),V.push(N-xa),U.push(O),V.push(N+Ga))):(isNaN(z)||(w.push(z),x.push(E-xa)),x.push(E-xa),w.push(F),x.push(E+Ga),w.push(F),!Ra||isNaN(N)||isNaN(O)||(isNaN(C)||(U.push(O-xa),V.push(C)),U.push(O-xa),V.push(N),U.push(O+Ga),V.push(N)));B=E;z=F;A=O;C=N;wa=E;Da=F;ja=E;ka=F;if($a||void 0!=v.lineColor||void 0!=v.fillColors||!isNaN(v.dashLength)){var ec=x[x.length-2],fc=w[w.length-2];x.pop();w.pop();this.drawLineGraph(x,\\r\\nw,U,V);x=[ec];w=[fc];t?(w.push(F+Ga),x.push(E)):(x.push(E+Ga),w.push(F));U=[];V=[];this.lineColorSwitched=v.lineColor;this.fillColorsSwitched=v.fillColors;this.dashLengthSwitched=v.dashLength;m&&(Sa?(this.lineColorSwitched=ya,this.fillColorsSwitched=wb):(this.lineColorSwitched=Ja,this.fillColorsSwitched=Qa))}if(Pb||v.gap)B=z=NaN,this.drawLineGraph(x,w,U,V),x=[],w=[],U=[],V=[]}else if(!y){if(1>=this.periodSpan||1xa+Ga)B=z=NaN;this.drawLineGraph(x,w,U,V);x=[];w=[];U=[];V=[]}break;\\r\\ncase \\\"column\\\":Aa=Ha;void 0!=v.lineColor&&(Aa=v.lineColor);if(!isNaN(W)){m||(v.isNegative=WSb&&ob>Sb)){var Ba;if(t){\\\"3d\\\"==L?(Q=F-(r/2-this.depthCount+1)*(k+T)+T/2+R*ea,S=O+H*ea,Ba=ea):(Q=Math.floor(F-(r/2-ea)*(k+T)+T/2),S=O,Ba=0);K=k;wa=E;Da=Q+k/2;ja=E;ka=Q+k/2;Q+K>q+Ba*R&&(K=q-Q+Ba*R);Qaa?!0:!1;0===aa&&1/W===1/-0&&(v.labelIsNegative=!0);isNaN(G.percentWidthValue)||(K=this.height*G.percentWidthValue/100,Q=zb,zb+=K,Da=Q+K/2);K=d.roundTo(K,2);aa=d.roundTo(aa,2);Qn+Ba*H&&(K=\\r\\nn-S+Ba*H);Sq&&(K=q-Q);0>Q&&(K+=Q,Q=0);if(Qta?(Fb=[E,ra],Gb=[O,pa]):(Fb=[O,ra],Gb=[E,pa]);!isNaN(ra)&&!isNaN(pa)&&Fn&&(K=n-S);0>S&&(K+=S,S=0);aa=F-N;if(S=ta&&(Va=0);var ua=new d.Cuboid(h,K,aa,H,R,Ma,Va,ca,Aa,X,ga,u,t,da,bb,mb,Z),Hb,Ib;W>ta?(Hb=[F,sa],Ib=[N,qa]):(Hb=[N,sa],Ib=[F,qa]);!isNaN(sa)&&!isNaN(qa)&&EW?E-bc/2-2-fb-sb:E+bc/2+3+fb+sb):(db=wa,eb=0>W?F+cc/2+fb+sb:F-cc/2-3-fb-sb);Na.translate(db,eb);f.totals[M]=Na;t?(0>eb||eb>q)&&Na.remove():(0>db||db>n)&&Na.remove()}}}}}}}if(\\\"line\\\"==g||\\\"step\\\"==g||\\\"smoothedLine\\\"==g)\\\"smoothedLine\\\"==g?this.drawSmoothedGraph(x,w,U,V):this.drawLineGraph(x,w,U,V),I||this.launchAnimation();this.bulletsHidden&&this.hideBullets();this.customBulletsHidden&&\\r\\nthis.hideCustomBullets()},animateColumns:function(a,b){var c=this,e=c.chart.startDuration;0h.height&&(z=h.height),0>z&&(z=0));q=d.line(l,a,b,t,q,p,x,!1,!0,f);d.setCN(k,q,h.bcn+\\\"stroke\\\");m.push(q);m.click(function(a){h.handleGraphEvent(a,\\r\\n\\\"clickGraph\\\")}).mouseover(function(a){h.handleGraphEvent(a,\\\"rollOverGraph\\\")}).mouseout(function(a){h.handleGraphEvent(a,\\\"rollOutGraph\\\")}).touchmove(function(a){h.chart.handleMouseMove(a)}).touchend(function(a){h.chart.handleTouchEnd(a)});void 0===y||h.useNegativeColorIfDown||(p=d.line(l,a,b,y,r,p,x,!1,!0,f),d.setCN(k,p,h.bcn+\\\"stroke\\\"),d.setCN(k,p,h.bcn+\\\"stroke-negative\\\"),n.push(p));if(0a&&(a=this.fillAlphas),0===a&&(a=this.bulletAlpha),0===a&&(a=1));return a},createBullet:function(a,b,c){if(!isNaN(b)&&!isNaN(c)&&(\\\"none\\\"!=this.bullet||this.customBullet||a.bullet||a.customBullet)){var e=this.chart,h=this.container,f=this.bulletOffset,g=this.bulletSize;isNaN(a.bulletSize)||(g=a.bulletSize);var k=a.values.value,\\r\\nl=this.maxValue,m=this.minValue,n=this.maxBulletSize,q=this.minBulletSize;isNaN(l)||(isNaN(k)||(g=(k-m)/(l-m)*(n-q)+q),m==l&&(g=n));l=g;this.bulletAxis&&(g=a.values.error,isNaN(g)||(k=g),g=this.bulletAxis.stepWidth*k);gb||b>this.width||c<-g/2||c>\\r\\nthis.height)p.remove(),p=null;p&&(this.bulletSet.push(p),p.translate(b,c),this.addListeners(p,a),this.allBullets.push(p));a.bx=b;a.by=c;d.setCN(e,p,this.bcn+\\\"bullet\\\");a.className&&d.setCN(e,p,a.className,!0)}p?(p.size=g||0,a.bulletGraphics=p):p={size:0};p.graphDataItem=a;return p}},showBullets:function(){var a=this.allBullets,b;this.bulletsHidden=!1;for(b=0;ba+k||hq+l)?(g.showBalloon(m),g.hide(0)):(g.followCursor(c),g.showBalloon(m)))):(this.hideBalloonReal(),\\r\\nthis.resizeBullet(a,e,h))}else this.hideBalloonReal()},resizeBullet:function(a,b,c){this.fixBulletSize();if(a&&d.isModern&&(1!=b||!isNaN(c))){var e=a.bulletGraphics;e&&!e.doNotScale&&(e.translate(a.bx,a.by,b),isNaN(c)||(e.setAttr(\\\"fill-opacity\\\",c),e.setAttr(\\\"stroke-opacity\\\",c)),this.resizedDItem=a)}}})})();(function(){var d=window.AmCharts;d.ChartCursor=d.Class({construct:function(a){this.cname=\\\"ChartCursor\\\";this.createEvents(\\\"changed\\\",\\\"zoomed\\\",\\\"onHideCursor\\\",\\\"onShowCursor\\\",\\\"draw\\\",\\\"selected\\\",\\\"moved\\\",\\\"panning\\\",\\\"zoomStarted\\\");this.enabled=!0;this.cursorAlpha=1;this.selectionAlpha=.2;this.cursorColor=\\\"#CC0000\\\";this.categoryBalloonAlpha=1;this.color=\\\"#FFFFFF\\\";this.type=\\\"cursor\\\";this.zoomed=!1;this.zoomable=!0;this.pan=!1;this.categoryBalloonDateFormat=\\\"MMM DD, YYYY\\\";this.categoryBalloonText=\\\"[[category]]\\\";\\r\\nthis.categoryBalloonEnabled=this.valueBalloonsEnabled=!0;this.rolledOver=!1;this.cursorPosition=\\\"middle\\\";this.bulletsEnabled=this.skipZoomDispatch=!1;this.bulletSize=8;this.selectWithoutZooming=this.oneBalloonOnly=!1;this.graphBulletSize=1.7;this.animationDuration=.3;this.zooming=!1;this.adjustment=0;this.avoidBalloonOverlapping=!0;this.leaveCursor=!1;this.leaveAfterTouch=!0;this.valueZoomable=!1;this.balloonPointerOrientation=\\\"horizontal\\\";this.hLineEnabled=this.vLineEnabled=!0;this.vZoomEnabled=\\r\\nthis.hZoomEnabled=!1;d.applyTheme(this,a,this.cname)},draw:function(){this.destroy();var a=this.chart;a.panRequired=!0;var b=a.container;this.rotate=a.rotate;this.container=b;this.prevLineHeight=this.prevLineWidth=NaN;b=b.set();b.translate(this.x,this.y);this.set=b;a.cursorSet.push(b);this.createElements();d.isString(this.limitToGraph)&&(this.limitToGraph=d.getObjById(a.graphs,this.limitToGraph),this.fullWidth=!1,this.cursorPosition=\\\"middle\\\");this.pointer=this.balloonPointerOrientation.substr(0,1).toUpperCase();\\r\\nthis.isHidden=!1;this.hideLines();this.valueLineAxis||(this.valueLineAxis=a.valueAxes[0])},createElements:function(){var a=this.chart,b=a.dx,c=a.dy,e=this.width,h=this.height,f,g,k=this.cursorAlpha;f=this.valueLineAlpha;this.rotate?g=k:(g=f,f=k);\\\"xy\\\"==a.type&&(f=g=k);this.vvLine=d.line(this.container,[b,0,0],[c,0,h],this.cursorColor,f,1);d.setCN(a,this.vvLine,\\\"cursor-line\\\");d.setCN(a,this.vvLine,\\\"cursor-line-vertical\\\");this.hhLine=d.line(this.container,[0,e,e+b],[0,0,c],this.cursorColor,g,1);d.setCN(a,\\r\\nthis.hhLine,\\\"cursor-line\\\");d.setCN(a,this.hhLine,\\\"cursor-line-horizontal\\\");this.vLine=this.rotate?this.vvLine:this.hhLine;this.set.push(this.vvLine);this.set.push(this.hhLine);this.set.node.style.pointerEvents=\\\"none\\\";this.fullLines=this.container.set();a=a.cursorLineSet;a.push(this.fullLines);a.translate(this.x,this.y);a.clipRect(0,0,e,h);this.set.clipRect(0,0,e,h)},update:function(){var a=this.chart,b=a.mouseX-this.x,c=a.mouseY-this.y;this.mouseX=b;this.mouseY=c;this.mouse2X=a.mouse2X-this.x;this.mouse2Y=\\r\\na.mouse2Y-this.y;var e;if(a.chartData&&0document.documentMode&&(this.updateOnReleaseOnly=!0);this.dragIconHeight=this.dragIconWidth=35;this.dragIcon=\\\"dragIconRoundBig\\\";\\r\\nthis.enabled=!0;this.percentStart=this.offset=0;this.percentEnd=1;d.applyTheme(this,a,\\\"SimpleChartScrollbar\\\")},draw:function(){var a=this;a.destroy();if(a.enabled){var b=a.chart.container,c=a.rotate,e=a.chart;e.panRequired=!0;var h=b.set();a.set=h;e.scrollbarsSet.push(h);var f,g;c?(f=a.scrollbarHeight,g=e.plotAreaHeight):(g=a.scrollbarHeight,f=e.plotAreaWidth);a.width=f;if((a.height=g)&&f){var k=d.rect(b,f,g,a.backgroundColor,a.backgroundAlpha,1,a.backgroundColor,a.backgroundAlpha);d.setCN(e,k,\\\"scrollbar-bg\\\");\\r\\na.bg=k;h.push(k);k=d.rect(b,f,g,\\\"#000\\\",.005);h.push(k);a.invisibleBg=k;k.click(function(){a.handleBgClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()}).touchend(function(){a.handleBgClick()});k=d.rect(b,f,g,a.selectedBackgroundColor,a.selectedBackgroundAlpha);d.setCN(e,k,\\\"scrollbar-bg-selected\\\");a.selectedBG=k;h.push(k);f=d.rect(b,f,g,\\\"#000\\\",.005);a.dragger=f;h.push(f);f.mousedown(function(b){a.handleDragStart(b)}).mouseup(function(){a.handleDragStop()}).mouseover(function(){a.handleDraggerOver()}).mouseout(function(){a.handleMouseOut()}).touchstart(function(b){a.handleDragStart(b)}).touchend(function(){a.handleDragStop()});\\r\\nf=e.pathToImages;g=a.dragIcon.replace(/\\\\.[a-z]*$/i,\\\"\\\");c?(k=f+g+\\\"H\\\"+e.extension,f=a.dragIconWidth,c=a.dragIconHeight):(k=f+g+e.extension,c=a.dragIconWidth,f=a.dragIconHeight);g=b.image(k,0,0,c,f);d.setCN(e,g,\\\"scrollbar-grip-left\\\");k=b.image(k,0,0,c,f);d.setCN(e,k,\\\"scrollbar-grip-right\\\");var l=10,m=20;e.panEventsEnabled&&(l=25,m=a.scrollbarHeight);var n=d.rect(b,l,m,\\\"#000\\\",.005),q=d.rect(b,l,m,\\\"#000\\\",.005);q.translate(-(l-c)/2,-(m-f)/2);n.translate(-(l-c)/2,-(m-f)/2);c=b.set([g,q]);b=b.set([k,n]);\\r\\na.iconLeft=c;h.push(a.iconLeft);a.iconRight=b;h.push(b);c.mousedown(function(){a.leftDragStart()}).mouseup(function(){a.leftDragStop()}).mouseover(function(){a.iconRollOver()}).mouseout(function(){a.iconRollOut()}).touchstart(function(){a.leftDragStart()}).touchend(function(){a.leftDragStop()});b.mousedown(function(){a.rightDragStart()}).mouseup(function(){a.rightDragStop()}).mouseover(function(){a.iconRollOver()}).mouseout(function(){a.iconRollOut()}).touchstart(function(){a.rightDragStart()}).touchend(function(){a.rightDragStop()});\\r\\nd.ifArray(e.chartData)?h.show():h.hide();a.hideDragIcons();a.clipDragger(!1)}h.translate(a.x,a.y);h.node.style.msTouchAction=\\\"none\\\";h.node.style.touchAction=\\\"none\\\"}},updateScrollbarSize:function(a,b){if(!isNaN(a)&&!isNaN(b)){a=Math.round(a);b=Math.round(b);var c=this.dragger,e,d,f,g,k;this.rotate?(e=0,d=a,f=this.width+1,g=b-a,c.setAttr(\\\"height\\\",b-a),c.setAttr(\\\"y\\\",d)):(e=a,d=0,f=b-a,g=this.height+1,k=b-a,c.setAttr(\\\"x\\\",e),c.setAttr(\\\"width\\\",k));this.clipAndUpdate(e,d,f,g)}},update:function(){var a,b=\\r\\n!1,c,e,d=this.x,f=this.y,g=this.dragger,k=this.getDBox();if(k){c=k.x+d;e=k.y+f;var l=k.width,k=k.height,m=this.rotate,n=this.chart,q=this.width,p=this.height,t=n.mouseX,r=n.mouseY;a=this.initialMouse;this.forceClip&&this.clipDragger(!0);n.mouseIsOver&&(this.dragging&&(n=this.initialCoord,m?(a=n+(r-a),0>a&&(a=0),n=p-k,a>n&&(a=n),g.setAttr(\\\"y\\\",a)):(a=n+(t-a),0>a&&(a=0),n=q-l,a>n&&(a=n),g.setAttr(\\\"x\\\",a)),this.clipDragger(!0)),this.resizingRight&&(m?(a=r-e,a+e>p+f&&(a=p-e+f),0>a?(this.resizingRight=!1,\\r\\nb=this.resizingLeft=!0):(0===a&&(a=.1),g.setAttr(\\\"height\\\",a))):(a=t-c,a+c>q+d&&(a=q-c+d),0>a?(this.resizingRight=!1,b=this.resizingLeft=!0):(0===a&&(a=.1),g.setAttr(\\\"width\\\",a))),this.clipDragger(!0)),this.resizingLeft&&(m?(c=e,e=r,ep+f&&(e=p+f),a=!0===b?c-e:k+c-e,0>a?(this.resizingRight=!0,this.resizingLeft=!1,g.setAttr(\\\"y\\\",c+k-f)):(0===a&&(a=.1),g.setAttr(\\\"y\\\",e-f),g.setAttr(\\\"height\\\",a))):(e=t,eq+d&&(e=q+d),a=!0===b?c-e:l+c-e,0>a?(this.resizingRight=!0,this.resizingLeft=!1,\\r\\ng.setAttr(\\\"x\\\",c+l-d)):(0===a&&(a=.1),g.setAttr(\\\"x\\\",e-d),g.setAttr(\\\"width\\\",a))),this.clipDragger(!0)))}},stopForceClip:function(){this.animating=this.forceClip=!1},clipDragger:function(a){var b=this.getDBox();if(b){var c=b.x,d=b.y,h=b.width,b=b.height,f=!1;if(this.rotate){if(c=0,h=this.width+1,this.clipY!=d||this.clipH!=b)f=!0}else if(d=0,b=this.height+1,this.clipX!=c||this.clipW!=h)f=!0;f&&(this.clipAndUpdate(c,d,h,b),a&&(this.updateOnReleaseOnly||this.dispatchScrollbarEvent()))}},maskGraphs:function(){},\\r\\nclipAndUpdate:function(a,b,c,d){this.clipX=a;this.clipY=b;this.clipW=c;this.clipH=d;this.selectedBG.setAttr(\\\"width\\\",c);this.selectedBG.setAttr(\\\"height\\\",d);this.selectedBG.translate(a,b);this.updateDragIconPositions();this.maskGraphs(a,b,c,d)},dispatchScrollbarEvent:function(){if(this.skipEvent)this.skipEvent=!1;else{var a=this.chart;a.hideBalloon();var b=this.getDBox(),c=b.x,d=b.y,h=b.width,f=b.height,g,k;this.rotate?(b=d,g=this.height/f,k=1-d/this.height,c=1-(d+f)/this.height):(b=c,g=this.width/\\r\\nh,k=c/this.width,c=(c+h)/this.width);this.fire({type:\\\"zoomed\\\",position:b,chart:a,target:this,multiplier:g,relativeStart:c,relativeEnd:k})}},updateDragIconPositions:function(){var a=this.getDBox(),b=a.x,c=a.y,d=this.iconLeft,h=this.iconRight,f,g,k=this.scrollbarHeight;this.rotate?(f=this.dragIconWidth,g=this.dragIconHeight,d.translate((k-g)/2,c-f/2),h.translate((k-g)/2,c+a.height-f/2)):(f=this.dragIconHeight,g=this.dragIconWidth,d.translate(b-g/2,(k-f)/2),h.translate(b-g/2+a.width,(k-f)/2))},showDragIcons:function(){this.resizeEnabled&&\\r\\n(this.iconLeft.show(),this.iconRight.show())},hideDragIcons:function(){if(!this.resizingLeft&&!this.resizingRight&&!this.dragging){if(this.hideResizeGrips||!this.resizeEnabled)this.iconLeft.hide(),this.iconRight.hide();this.removeCursors()}},removeCursors:function(){this.chart.setMouseCursor(\\\"auto\\\")},fireZoomEvent:function(a){this.fire({type:a,chart:this.chart,target:this})},percentZoom:function(a,b){if(this.dragger&&this.enabled){this.dragger.stop();isNaN(a)&&(a=0);isNaN(b)&&(b=1);var c,d,h;this.rotate?\\r\\n(c=this.height,d=c-c*b,h=c-c*a):(c=this.width,h=c*b,d=c*a);this.updateScrollbarSize(d,h);this.clipDragger(!1);this.percentStart=a;this.percentEnd=b}},destroy:function(){this.clear();d.remove(this.set);d.remove(this.iconRight);d.remove(this.iconLeft)},clear:function(){},handleDragStart:function(){if(this.enabled){this.fireZoomEvent(\\\"zoomStarted\\\");var a=this.chart;this.dragger.stop();this.removeCursors();this.dragging=!0;var b=this.getDBox();this.rotate?(this.initialCoord=b.y,this.initialMouse=a.mouseY):\\r\\n(this.initialCoord=b.x,this.initialMouse=a.mouseX)}},handleDragStop:function(){this.updateOnReleaseOnly&&(this.update(),this.skipEvent=!1,this.dispatchScrollbarEvent());this.dragging=!1;this.mouseIsOver&&this.removeCursors();this.update();this.fireZoomEvent(\\\"zoomEnded\\\")},handleDraggerOver:function(){this.handleMouseOver()},leftDragStart:function(){this.fireZoomEvent(\\\"zoomStarted\\\");this.dragger.stop();this.resizingLeft=!0},leftDragStop:function(){this.resizingLeft=!1;this.mouseIsOver||this.removeCursors();\\r\\nthis.updateOnRelease();this.fireZoomEvent(\\\"zoomEnded\\\")},rightDragStart:function(){this.fireZoomEvent(\\\"zoomStarted\\\");this.dragger.stop();this.resizingRight=!0},rightDragStop:function(){this.resizingRight=!1;this.mouseIsOver||this.removeCursors();this.updateOnRelease();this.fireZoomEvent(\\\"zoomEnded\\\")},iconRollOut:function(){this.removeCursors()},iconRollOver:function(){this.rotate?this.chart.setMouseCursor(\\\"ns-resize\\\"):this.chart.setMouseCursor(\\\"ew-resize\\\");this.handleMouseOver()},getDBox:function(){if(this.dragger)return this.dragger.getBBox()},\\r\\nhandleBgClick:function(){var a=this;if(!a.resizingRight&&!a.resizingLeft){a.zooming=!0;var b,c,e=a.scrollDuration,h=a.dragger;b=a.getDBox();var f=b.height,g=b.width;c=a.chart;var k=a.y,l=a.x,m=a.rotate;m?(b=\\\"y\\\",c=c.mouseY-f/2-k,c=d.fitToBounds(c,0,a.height-f)):(b=\\\"x\\\",c=c.mouseX-g/2-l,c=d.fitToBounds(c,0,a.width-g));a.updateOnReleaseOnly?(a.skipEvent=!1,h.setAttr(b,c),a.dispatchScrollbarEvent(),a.clipDragger()):(a.animating=!0,c=Math.round(c),m?h.animate({y:c},e,\\\">\\\"):h.animate({x:c},e,\\\">\\\"),a.forceClip=\\r\\n!0,clearTimeout(a.forceTO),a.forceTO=setTimeout(function(){a.stopForceClip.call(a)},5E3*e))}},updateOnRelease:function(){this.updateOnReleaseOnly&&(this.update(),this.skipEvent=!1,this.dispatchScrollbarEvent())},handleReleaseOutside:function(){if(this.set){if(this.resizingLeft||this.resizingRight||this.dragging)this.updateOnRelease(),this.removeCursors();this.animating=this.mouseIsOver=this.dragging=this.resizingRight=this.resizingLeft=!1;this.hideDragIcons();this.update()}},handleMouseOver:function(){this.mouseIsOver=\\r\\n!0;this.showDragIcons()},handleMouseOut:function(){this.mouseIsOver=!1;this.hideDragIcons()}})})();(function(){var d=window.AmCharts;d.ChartScrollbar=d.Class({inherits:d.SimpleChartScrollbar,construct:function(a){this.cname=\\\"ChartScrollbar\\\";d.ChartScrollbar.base.construct.call(this,a);this.graphLineColor=\\\"#BBBBBB\\\";this.graphLineAlpha=0;this.graphFillColor=\\\"#BBBBBB\\\";this.graphFillAlpha=1;this.selectedGraphLineColor=\\\"#888888\\\";this.selectedGraphLineAlpha=0;this.selectedGraphFillColor=\\\"#888888\\\";this.selectedGraphFillAlpha=1;this.gridCount=0;this.gridColor=\\\"#FFFFFF\\\";this.gridAlpha=.7;this.skipEvent=\\r\\nthis.autoGridCount=!1;this.color=\\\"#FFFFFF\\\";this.scrollbarCreated=!1;this.oppositeAxis=!0;d.applyTheme(this,a,this.cname)},init:function(){var a=this.categoryAxis,b=this.chart,c=this.gridAxis;a||(\\\"CategoryAxis\\\"==this.gridAxis.cname?(this.catScrollbar=!0,a=new d.CategoryAxis,a.id=\\\"scrollbar\\\"):(a=new d.ValueAxis,a.data=b.chartData,a.id=c.id,a.type=c.type,a.maximumDate=c.maximumDate,a.minimumDate=c.minimumDate,a.minPeriod=c.minPeriod),this.categoryAxis=a);a.chart=b;a.dateFormats=c.dateFormats;a.markPeriodChange=\\r\\nc.markPeriodChange;a.boldPeriodBeginning=c.boldPeriodBeginning;a.labelFunction=c.labelFunction;a.axisItemRenderer=d.RecItem;a.axisRenderer=d.RecAxis;a.guideFillRenderer=d.RecFill;a.inside=!0;a.fontSize=this.fontSize;a.tickLength=0;a.axisAlpha=0;d.isString(this.graph)&&(this.graph=d.getObjById(b.graphs,this.graph));(a=this.graph)&&this.catScrollbar&&(c=this.valueAxis,c||(this.valueAxis=c=new d.ValueAxis,c.visible=!1,c.scrollbar=!0,c.axisItemRenderer=d.RecItem,c.axisRenderer=d.RecAxis,c.guideFillRenderer=\\r\\nd.RecFill,c.labelsEnabled=!1,c.chart=b),b=this.unselectedGraph,b||(b=new d.AmGraph,b.scrollbar=!0,this.unselectedGraph=b,b.negativeBase=a.negativeBase,b.noStepRisers=a.noStepRisers),b=this.selectedGraph,b||(b=new d.AmGraph,b.scrollbar=!0,this.selectedGraph=b,b.negativeBase=a.negativeBase,b.noStepRisers=a.noStepRisers));this.scrollbarCreated=!0},draw:function(){var a=this;d.ChartScrollbar.base.draw.call(a);if(a.enabled){a.scrollbarCreated||a.init();var b=a.chart,c=b.chartData,e=a.categoryAxis,h=a.rotate,\\r\\nf=a.x,g=a.y,k=a.width,l=a.height,m=a.gridAxis,n=a.set;e.setOrientation(!h);e.parseDates=m.parseDates;\\\"ValueAxis\\\"==a.categoryAxis.cname&&(e.rotate=!h);e.equalSpacing=m.equalSpacing;e.minPeriod=m.minPeriod;e.startOnAxis=m.startOnAxis;e.width=k-1;e.height=l;e.gridCount=a.gridCount;e.gridColor=a.gridColor;e.gridAlpha=a.gridAlpha;e.color=a.color;e.tickLength=0;e.axisAlpha=0;e.autoGridCount=a.autoGridCount;e.parseDates&&!e.equalSpacing&&e.timeZoom(b.firstTime,b.lastTime);e.minimum=a.gridAxis.fullMin;e.maximum=\\r\\na.gridAxis.fullMax;e.strictMinMax=!0;e.zoom(0,c.length-1);if((m=a.graph)&&a.catScrollbar){var q=a.valueAxis,p=m.valueAxis;q.id=p.id;q.rotate=h;q.setOrientation(h);q.width=k;q.height=l;q.dataProvider=c;q.reversed=p.reversed;q.logarithmic=p.logarithmic;q.gridAlpha=0;q.axisAlpha=0;n.push(q.set);h?(q.y=g,q.x=0):(q.x=f,q.y=0);var f=Infinity,g=-Infinity,t;for(t=0;tg&&(g=y)}}Infinity!=f&&(q.minimum=f);-Infinity!=g&&(q.maximum=g+.1*(g-f));f==g&&(--q.minimum,q.maximum+=1);void 0!==a.minimum&&(q.minimum=a.minimum);void 0!==a.maximum&&(q.maximum=a.maximum);q.zoom(0,c.length-1);u=a.unselectedGraph;u.id=m.id;u.bcn=\\\"scrollbar-graph-\\\";u.rotate=h;u.chart=b;u.data=c;u.valueAxis=q;u.chart=m.chart;u.categoryAxis=a.categoryAxis;u.periodSpan=m.periodSpan;u.valueField=m.valueField;u.openField=m.openField;u.closeField=m.closeField;u.highField=m.highField;u.lowField=m.lowField;\\r\\nu.lineAlpha=a.graphLineAlpha;u.lineColorR=a.graphLineColor;u.fillAlphas=a.graphFillAlpha;u.fillColorsR=a.graphFillColor;u.connect=m.connect;u.hidden=m.hidden;u.width=k;u.height=l;u.pointPosition=m.pointPosition;u.stepDirection=m.stepDirection;u.periodSpan=m.periodSpan;p=a.selectedGraph;p.id=m.id;p.bcn=u.bcn+\\\"selected-\\\";p.rotate=h;p.chart=b;p.data=c;p.valueAxis=q;p.chart=m.chart;p.categoryAxis=e;p.periodSpan=m.periodSpan;p.valueField=m.valueField;p.openField=m.openField;p.closeField=m.closeField;p.highField=\\r\\nm.highField;p.lowField=m.lowField;p.lineAlpha=a.selectedGraphLineAlpha;p.lineColorR=a.selectedGraphLineColor;p.fillAlphas=a.selectedGraphFillAlpha;p.fillColorsR=a.selectedGraphFillColor;p.connect=m.connect;p.hidden=m.hidden;p.width=k;p.height=l;p.pointPosition=m.pointPosition;p.stepDirection=m.stepDirection;p.periodSpan=m.periodSpan;b=a.graphType;b||(b=m.type);u.type=b;p.type=b;c=c.length-1;u.zoom(0,c);p.zoom(0,c);p.set.click(function(){a.handleBackgroundClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()});\\r\\nu.set.click(function(){a.handleBackgroundClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()});n.push(u.set);n.push(p.set)}n.push(e.set);n.push(e.labelsSet);a.bg.toBack();a.invisibleBg.toFront();a.dragger.toFront();a.iconLeft.toFront();a.iconRight.toFront()}},timeZoom:function(a,b,c){this.startTime=a;this.endTime=b;this.timeDifference=b-a;this.skipEvent=!d.toBoolean(c);this.zoomScrollbar();this.skipEvent||this.dispatchScrollbarEvent()},zoom:function(a,b){this.start=\\r\\na;this.end=b;this.skipEvent=!0;this.zoomScrollbar()},dispatchScrollbarEvent:function(){if(\\\"ValueAxis\\\"==this.categoryAxis.cname)d.ChartScrollbar.base.dispatchScrollbarEvent.call(this);else if(this.skipEvent)this.skipEvent=!1;else{var a=this.chart.chartData,b,c,e=this.dragger.getBBox();b=e.x;var h=e.y,f=e.width,e=e.height,g=this.chart;this.rotate?(b=h,c=e):c=f;f={type:\\\"zoomed\\\",target:this};f.chart=g;var k=this.categoryAxis,l=this.stepWidth,h=g.minSelectedTime,e=!1;if(k.parseDates&&!k.equalSpacing){if(a=\\r\\ng.lastTime,g=g.firstTime,k=Math.round(b/l)+g,b=this.dragging?k+this.timeDifference:Math.round((b+c)/l)+g,k>b&&(k=b),0a&&(b=a),b-hb&&(b=k+h),k!=this.startTime||b!=this.endTime)this.startTime=k,this.endTime=b,f.start=k,f.end=b,f.startDate=new Date(k),f.endDate=new Date(b),this.fire(f)}else if(k.startOnAxis||(b+=l/2),c-=this.stepWidth/2,h=k.xToIndex(b),b=k.xToIndex(b+c),h!=this.start||this.end!=b)k.startOnAxis&&\\r\\n(this.resizingRight&&h==b&&b++,this.resizingLeft&&h==b&&(0this.timeDifference&&(this.timeDifference=0)},handleBackgroundClick:function(){d.ChartScrollbar.base.handleBackgroundClick.call(this);this.dragging||(this.difference=this.end-this.start,this.timeDifference=this.endTime-this.startTime,0>this.timeDifference&&(this.timeDifference=0))}})})();(function(){var d=window.AmCharts;d.AmBalloon=d.Class({construct:function(a){this.cname=\\\"AmBalloon\\\";this.enabled=!0;this.fillColor=\\\"#FFFFFF\\\";this.fillAlpha=.8;this.borderThickness=2;this.borderColor=\\\"#FFFFFF\\\";this.borderAlpha=1;this.cornerRadius=0;this.maxWidth=220;this.horizontalPadding=8;this.verticalPadding=4;this.pointerWidth=6;this.pointerOrientation=\\\"V\\\";this.color=\\\"#000000\\\";this.adjustBorderColor=!0;this.show=this.follow=this.showBullet=!1;this.bulletSize=3;this.shadowAlpha=.4;this.shadowColor=\\r\\n\\\"#000000\\\";this.fadeOutDuration=this.animationDuration=.3;this.fixedPosition=!0;this.offsetY=6;this.offsetX=1;this.textAlign=\\\"center\\\";this.disableMouseEvents=!0;this.deltaSignX=this.deltaSignY=1;d.isModern||(this.offsetY*=1.5);this.sdy=this.sdx=0;d.applyTheme(this,a,this.cname)},draw:function(){var a=this.pointToX,b=this.pointToY;d.isModern||(this.drop=!1);var c=this.chart;d.VML&&(this.fadeOutDuration=0);this.xAnim&&c.stopAnim(this.xAnim);this.yAnim&&c.stopAnim(this.yAnim);this.sdy=this.sdx=0;if(!isNaN(a)){var e=\\r\\nthis.follow,h=c.container,f=this.set;d.remove(f);this.removeDiv();f=h.set();f.node.style.pointerEvents=\\\"none\\\";this.set=f;this.mainSet?(this.mainSet.push(this.set),this.sdx=this.mainSet.x,this.sdy=this.mainSet.y):c.balloonsSet.push(f);if(this.show){var g=this.l,k=this.t,l=this.r,m=this.b,n=this.balloonColor,q=this.fillColor,p=this.borderColor,t=q;void 0!=n&&(this.adjustBorderColor?t=p=n:q=n);var r=this.horizontalPadding,u=this.verticalPadding,y=this.pointerWidth,x=this.pointerOrientation,w=this.cornerRadius,\\r\\nB=c.fontFamily,z=this.fontSize;void 0==z&&(z=c.fontSize);var n=document.createElement(\\\"div\\\"),A=c.classNamePrefix;n.className=A+\\\"-balloon-div\\\";this.className&&(n.className=n.className+\\\" \\\"+A+\\\"-balloon-div-\\\"+this.className);A=n.style;this.disableMouseEvents&&(A.pointerEvents=\\\"none\\\");A.position=\\\"absolute\\\";var C=this.minWidth,D=\\\"\\\";isNaN(C)||(D=\\\"min-width:\\\"+(C-2*r)+\\\"px; \\\");n.innerHTML='
'+this.text+\\\"
\\\";c.chartDiv.appendChild(n);this.textDiv=n;var J=n.offsetWidth,H=n.offsetHeight;n.clientHeight&&(J=n.clientWidth,H=n.clientHeight);B=H+2*u;D=J+2*r;!isNaN(C)&&DB&&(y=B/2),z=b-B/2,a=m&&(z=m-B);\\r\\nzl&&(C=l-D);var k=z+u,m=C+r,L=this.shadowAlpha,P=this.shadowColor,r=this.borderThickness,ia=this.bulletSize,I,u=this.fillAlpha,Z=this.borderAlpha;this.showBullet&&(I=d.circle(h,ia,t,u),f.push(I));this.drop?(g=D/1.6,l=0,\\\"V\\\"==x&&(x=\\\"down\\\"),\\\"H\\\"==x&&(x=\\\"left\\\"),\\\"down\\\"==x&&(C=a+1,z=b-g-g/3),\\\"up\\\"==x&&(l=180,C=a+1,z=b+g+g/3),\\\"left\\\"==x&&(l=270,C=a+g+g/3+2,z=b),\\\"right\\\"==x&&(l=90,C=a-g-g/3+2,z=b),k=z-H/2+1,m=C-J/2-1,q=d.drop(h,g,l,q,u,r,p,Z)):0D-y&&(g=D-y),gB-y&&(x=B-y),xa?D:a-C,D,D,0,0,D]),0this.r-d.width&&(a=this.r-d.width);ha.length&&(c=a.length);var h=this.graphs,f={},g=this.seriesIdField;g||(g=this.categoryField);var k=!1,l,m=this.categoryAxis,n,q,p;m&&(k=m.parseDates,n=m.forceShowField,p=m.classNameField,q=m.labelColorField,l=m.categoryFunction);var t,r,u={},y;k&&(t=d.extractPeriod(m.minPeriod),r=t.period,t=t.count,y=d.getPeriodDuration(r,t));var x={};this.lookupTable=x;var w,B=this.dataDateFormat,\\r\\nz={};for(w=b;w=y*P&&(z[L].gap=!0);this.processFields(b,I,Z);I.category=A.category;I.serialDataItem=A;I.graph=b;A.axes[H].graphs[L]=I;u[L]=A.time;z[L]=I}}}this.chartData[w]=A}if(this.parseCount==e){for(a=0;ab?this.colors[b]:a.lineColorR?\\r\\na.lineColorR:d.randomColor();a.lineColorR=c}a.fillColorsR=a.fillColors?a.fillColors:a.lineColorR;a.bulletBorderColorR=a.bulletBorderColor?a.bulletBorderColor:a.useLineColorForBulletBorder?a.lineColorR:a.bulletColor;a.bulletColorR=a.bulletColor?a.bulletColor:a.lineColorR;if(c=this.patterns)a.pattern=c[b]},handleLegendEvent:function(a){var b=a.type;a=a.dataItem;if(!this.legend.data&&a){var c=a.hidden,d=a.showBalloon;switch(b){case \\\"clickMarker\\\":this.textClickEnabled&&(d?this.hideGraphsBalloon(a):this.showGraphsBalloon(a));\\r\\nbreak;case \\\"clickLabel\\\":d?this.hideGraphsBalloon(a):this.showGraphsBalloon(a);break;case \\\"rollOverItem\\\":c||this.highlightGraph(a);break;case \\\"rollOutItem\\\":c||this.unhighlightGraph();break;case \\\"hideItem\\\":this.hideGraph(a);break;case \\\"showItem\\\":this.showGraph(a)}}},highlightGraph:function(a){var b=this.graphs,c,d=.2;this.legend&&(d=this.legend.rollOverGraphAlpha);if(1!=d)for(c=0;c=b&&(b=.001);if(void 0==h||0===h)h=.01;void 0===f&&(f=\\\"#000000\\\");void 0===g&&(g=0);e={fill:c,stroke:f,\\\"fill-opacity\\\":e,\\\"stroke-width\\\":h,\\\"stroke-opacity\\\":g};a=isNaN(l)?a.circle(0,0,b).attr(e):a.ellipse(0,0,b,l).attr(e);k&&a.gradient(\\\"radialGradient\\\",[c,d.adjustLuminosity(c,-.6)]);return a};d.text=function(a,b,c,e,h,f,g,k){f||(f=\\\"middle\\\");\\\"right\\\"==f&&(f=\\\"end\\\");\\\"left\\\"==f&&(f=\\\"start\\\");isNaN(k)&&(k=1);void 0!==b&&(b=String(b),d.isIE&&\\r\\n!d.isModern&&(b=b.replace(\\\"&\\\",\\\"&\\\"),b=b.replace(\\\"&\\\",\\\"&\\\")));c={fill:c,\\\"font-family\\\":e,\\\"font-size\\\":h+\\\"px\\\",opacity:k};!0===g&&(c[\\\"font-weight\\\"]=\\\"bold\\\");c[\\\"text-anchor\\\"]=f;return a.text(b,c)};d.polygon=function(a,b,c,e,h,f,g,k,l,m,n){isNaN(f)&&(f=.01);isNaN(k)&&(k=h);var q=e,p=!1;\\\"object\\\"==typeof q&&1b&&(b=Math.abs(b),t=-b);0>c&&(c=Math.abs(c),r=-c);t+=d.dx;r+=d.dy;h={fill:q,stroke:g,\\\"fill-opacity\\\":h,\\\"stroke-opacity\\\":k};void 0!==n&&0=x&&(h=x);var w=1/180*Math.PI,x=b+Math.sin(e*w)*k,B=c-Math.cos(e*w)*u,z=b+Math.sin(e*w)*f,A=c-Math.cos(e*w)*g,C=b+Math.sin((e+h)*w)*f,D=c-Math.cos((e+h)*w)*g,J=b+Math.sin((e+h)*w)*k,w=c-Math.cos((e+h)*w)*u,H={fill:d.adjustLuminosity(m.fill,-.2),\\\"stroke-opacity\\\":0,\\\"fill-opacity\\\":m[\\\"fill-opacity\\\"]},R=0;180Math.abs(h)&&1>=Math.abs(C-z)&&1>=Math.abs(D-A)&&(L=!0));h=\\\"\\\";var P;q&&(H[\\\"fill-opacity\\\"]=0,H[\\\"stroke-opacity\\\"]=m[\\\"stroke-opacity\\\"]/2,H.stroke=m.stroke);if(0a.length&&(a=String(a[0])+String(a[0])+String(a[1])+String(a[1])+String(a[2])+String(a[2]));b=b||0;var c=\\\"#\\\",e,h;for(h=0;3>h;h++)e=parseInt(a.substr(2*h,2),16),e=Math.round(Math.min(Math.max(0,e+e*b),255)).toString(16),c+=(\\\"00\\\"+\\r\\ne).substr(e.length);return c}})();(function(){var d=window.AmCharts;d.Bezier=d.Class({construct:function(a,b,c,e,h,f,g,k,l,m){\\\"object\\\"==typeof g&&(g=g[0]);\\\"object\\\"==typeof k&&(k=k[0]);0===k&&(g=\\\"none\\\");f={fill:g,\\\"fill-opacity\\\":k,\\\"stroke-width\\\":f};void 0!==l&&0c&&(k=c);b.push({x:l.x-k/h,y:l.y-e/f});b.push({x:l.x,y:l.y});b.push({x:l.x+k/h,y:l.y+e/f})}e=a[a.length-1].y-a[a.length-2].y;c=a[a.length-1].x-\\r\\na[a.length-2].x;b.push({x:a[a.length-1].x-c/h,y:a[a.length-1].y-e/f});b.push({x:a[a.length-1].x,y:a[a.length-1].y});return b},drawBeziers:function(a){var b=\\\"\\\",c;for(c=0;c<(a.length-1)/3;c++)b+=this.drawBezierMidpoint(a[3*c],a[3*c+1],a[3*c+2],a[3*c+3]);return b},drawBezierMidpoint:function(a,b,c,d){var h=Math.round,f=this.getPointOnSegment(a,b,.75),g=this.getPointOnSegment(d,c,.75),k=(d.x-a.x)/16,l=(d.y-a.y)/16,m=this.getPointOnSegment(a,b,.375);a=this.getPointOnSegment(f,g,.375);a.x-=k;a.y-=l;b=this.getPointOnSegment(g,\\r\\nf,.375);b.x+=k;b.y+=l;c=this.getPointOnSegment(d,c,.375);k=this.getMiddle(m,a);f=this.getMiddle(f,g);g=this.getMiddle(b,c);m=\\\" Q\\\"+h(m.x)+\\\",\\\"+h(m.y)+\\\",\\\"+h(k.x)+\\\",\\\"+h(k.y);m+=\\\" Q\\\"+h(a.x)+\\\",\\\"+h(a.y)+\\\",\\\"+h(f.x)+\\\",\\\"+h(f.y);m+=\\\" Q\\\"+h(b.x)+\\\",\\\"+h(b.y)+\\\",\\\"+h(g.x)+\\\",\\\"+h(g.y);return m+=\\\" Q\\\"+h(c.x)+\\\",\\\"+h(c.y)+\\\",\\\"+h(d.x)+\\\",\\\"+h(d.y)},getMiddle:function(a,b){return{x:(a.x+b.x)/2,y:(a.y+b.y)/2}},getPointOnSegment:function(a,b,c){return{x:a.x+(b.x-a.x)*c,y:a.y+(b.y-a.y)*c}}})})();(function(){var d=window.AmCharts;d.AmDraw=d.Class({construct:function(a,b,c,e){d.SVG_NS=\\\"http://www.w3.org/2000/svg\\\";d.SVG_XLINK=\\\"http://www.w3.org/1999/xlink\\\";d.hasSVG=!!document.createElementNS&&!!document.createElementNS(d.SVG_NS,\\\"svg\\\").createSVGRect;1>b&&(b=10);1>c&&(c=10);this.div=a;this.width=b;this.height=c;this.rBin=document.createElement(\\\"div\\\");d.hasSVG?(d.SVG=!0,b=this.createSvgElement(\\\"svg\\\"),a.appendChild(b),this.container=b,this.addDefs(e),this.R=new d.SVGRenderer(this)):d.isIE&&d.VMLRenderer&&\\r\\n(d.VML=!0,d.vmlStyleSheet||(document.namespaces.add(\\\"amvml\\\",\\\"urn:schemas-microsoft-com:vml\\\"),31>document.styleSheets.length?(b=document.createStyleSheet(),b.addRule(\\\".amvml\\\",\\\"behavior:url(#default#VML); display:inline-block; antialias:true\\\"),d.vmlStyleSheet=b):document.styleSheets[0].addRule(\\\".amvml\\\",\\\"behavior:url(#default#VML); display:inline-block; antialias:true\\\")),this.container=a,this.R=new d.VMLRenderer(this,e),this.R.disableSelection(a))},createSvgElement:function(a){return document.createElementNS(d.SVG_NS,\\r\\na)},circle:function(a,b,c,e){var h=new d.AmDObject(\\\"circle\\\",this);h.attr({r:c,cx:a,cy:b});this.addToContainer(h.node,e);return h},ellipse:function(a,b,c,e,h){var f=new d.AmDObject(\\\"ellipse\\\",this);f.attr({rx:c,ry:e,cx:a,cy:b});this.addToContainer(f.node,h);return f},setSize:function(a,b){0c&&(c=1);1>e&&(e=1);k.attr({x:a,y:b,width:c,height:e,rx:h,ry:h,\\\"stroke-width\\\":f});this.addToContainer(k.node,g);return k},image:function(a,b,c,e,h,f){var g=new d.AmDObject(\\\"image\\\",this);g.attr({x:b,y:c,width:e,height:h});this.R.path(g,a);this.addToContainer(g.node,f);return g},addToContainer:function(a,b){b||(b=this.container);b.appendChild(a)},text:function(a,b,c){return this.R.text(a,b,c)},path:function(a,b,c,e){var h=new d.AmDObject(\\\"path\\\",this);e||(e=\\\"100,100\\\");\\r\\nh.attr({cs:e});c?h.attr({dd:a}):h.attr({d:a});this.addToContainer(h.node,b);return h},set:function(a){return this.R.set(a)},remove:function(a){if(a){var b=this.rBin;b.appendChild(a);b.innerHTML=\\\"\\\"}},renderFix:function(){var a=this.container,b=a.style;b.top=\\\"0px\\\";b.left=\\\"0px\\\";try{var c=a.getBoundingClientRect(),d=c.left-Math.round(c.left),h=c.top-Math.round(c.top);d&&(b.left=d+\\\"px\\\");h&&(b.top=h+\\\"px\\\")}catch(f){}},update:function(){this.R.update()},addDefs:function(a){if(d.hasSVG){var b=this.createSvgElement(\\\"desc\\\"),\\r\\nc=this.container;c.setAttribute(\\\"version\\\",\\\"1.1\\\");c.style.position=\\\"absolute\\\";this.setSize(this.width,this.height);d.rtl&&(c.setAttribute(\\\"direction\\\",\\\"rtl\\\"),c.style.left=\\\"auto\\\",c.style.right=\\\"0px\\\");a&&(a.addCodeCredits&&b.appendChild(document.createTextNode(\\\"JavaScript chart by amCharts \\\"+a.version)),c.appendChild(b),a.defs&&(b=this.createSvgElement(\\\"defs\\\"),c.appendChild(b),d.parseDefs(a.defs,b),this.defs=b))}}})})();(function(){var d=window.AmCharts;d.AmDObject=d.Class({construct:function(a,b){this.D=b;this.R=b.R;this.node=this.R.create(this,a);this.y=this.x=0;this.scale=1},attr:function(a){this.R.attr(this,a);return this},getAttr:function(a){return this.node.getAttribute(a)},setAttr:function(a,b){this.R.setAttr(this,a,b);return this},clipRect:function(a,b,c,d){this.R.clipRect(this,a,b,c,d)},translate:function(a,b,c,d){d||(a=Math.round(a),b=Math.round(b));this.R.move(this,a,b,c);this.x=a;this.y=b;this.scale=\\r\\nc;this.angle&&this.rotate(this.angle)},rotate:function(a,b){this.R.rotate(this,a,b);this.angle=a},animate:function(a,b,c){for(var e in a)if(a.hasOwnProperty(e)){var h=e,f=a[e];c=d.getEffect(c);this.R.animate(this,h,f,b,c)}},push:function(a){if(a){var b=this.node;b.appendChild(a.node);var c=a.clipPath;c&&b.appendChild(c);(a=a.grad)&&b.appendChild(a)}},text:function(a){this.R.setText(this,a)},remove:function(){this.stop();this.R.remove(this)},clear:function(){var a=this.node;if(a.hasChildNodes())for(;1<=\\r\\na.childNodes.length;)a.removeChild(a.firstChild)},hide:function(){this.setAttr(\\\"visibility\\\",\\\"hidden\\\")},show:function(){this.setAttr(\\\"visibility\\\",\\\"visible\\\")},getBBox:function(){return this.R.getBBox(this)},toFront:function(){var a=this.node;if(a){this.prevNextNode=a.nextSibling;var b=a.parentNode;b&&b.appendChild(a)}},toPrevious:function(){var a=this.node;a&&this.prevNextNode&&(a=a.parentNode)&&a.insertBefore(this.prevNextNode,null)},toBack:function(){var a=this.node;if(a){this.prevNextNode=a.nextSibling;\\r\\nvar b=a.parentNode;if(b){var c=b.firstChild;c&&b.insertBefore(a,c)}}},mouseover:function(a){this.R.addListener(this,\\\"mouseover\\\",a);return this},mouseout:function(a){this.R.addListener(this,\\\"mouseout\\\",a);return this},click:function(a){this.R.addListener(this,\\\"click\\\",a);return this},dblclick:function(a){this.R.addListener(this,\\\"dblclick\\\",a);return this},mousedown:function(a){this.R.addListener(this,\\\"mousedown\\\",a);return this},mouseup:function(a){this.R.addListener(this,\\\"mouseup\\\",a);return this},touchmove:function(a){this.R.addListener(this,\\r\\n\\\"touchmove\\\",a);return this},touchstart:function(a){this.R.addListener(this,\\\"touchstart\\\",a);return this},touchend:function(a){this.R.addListener(this,\\\"touchend\\\",a);return this},contextmenu:function(a){this.node.addEventListener?this.node.addEventListener(\\\"contextmenu\\\",a,!0):this.R.addListener(this,\\\"contextmenu\\\",a);return this},stop:function(){d.removeFromArray(this.R.animations,this.an_translate);d.removeFromArray(this.R.animations,this.an_y);d.removeFromArray(this.R.animations,this.an_x)},length:function(){return this.node.childNodes.length},\\r\\ngradient:function(a,b,c){this.R.gradient(this,a,b,c)},pattern:function(a,b,c){a&&this.R.pattern(this,a,b,c)}})})();(function(){var d=window.AmCharts;d.VMLRenderer=d.Class({construct:function(a,b){this.chart=b;this.D=a;this.cNames={circle:\\\"oval\\\",ellipse:\\\"oval\\\",rect:\\\"roundrect\\\",path:\\\"shape\\\"};this.styleMap={x:\\\"left\\\",y:\\\"top\\\",width:\\\"width\\\",height:\\\"height\\\",\\\"font-family\\\":\\\"fontFamily\\\",\\\"font-size\\\":\\\"fontSize\\\",visibility:\\\"visibility\\\"}},create:function(a,b){var c;if(\\\"group\\\"==b)c=document.createElement(\\\"div\\\"),a.type=\\\"div\\\";else if(\\\"text\\\"==b)c=document.createElement(\\\"div\\\"),a.type=\\\"text\\\";else if(\\\"image\\\"==b)c=document.createElement(\\\"img\\\"),\\r\\na.type=\\\"image\\\";else{a.type=\\\"shape\\\";a.shapeType=this.cNames[b];c=document.createElement(\\\"amvml:\\\"+this.cNames[b]);var d=document.createElement(\\\"amvml:stroke\\\");c.appendChild(d);a.stroke=d;var h=document.createElement(\\\"amvml:fill\\\");c.appendChild(h);a.fill=h;h.className=\\\"amvml\\\";d.className=\\\"amvml\\\";c.className=\\\"amvml\\\"}c.style.position=\\\"absolute\\\";c.style.top=0;c.style.left=0;return c},path:function(a,b){a.node.setAttribute(\\\"src\\\",b)},setAttr:function(a,b,c){if(void 0!==c){var e;8===document.documentMode&&\\r\\n(e=!0);var h=a.node,f=a.type,g=h.style;\\\"r\\\"==b&&(g.width=2*c,g.height=2*c);\\\"oval\\\"==a.shapeType&&(\\\"rx\\\"==b&&(g.width=2*c),\\\"ry\\\"==b&&(g.height=2*c));\\\"roundrect\\\"==a.shapeType&&(\\\"width\\\"!=b&&\\\"height\\\"!=b||--c);\\\"cursor\\\"==b&&(g.cursor=c);\\\"cx\\\"==b&&(g.left=c-d.removePx(g.width)/2);\\\"cy\\\"==b&&(g.top=c-d.removePx(g.height)/2);var k=this.styleMap[b];\\\"width\\\"==k&&0>c&&(c=0);void 0!==k&&(g[k]=c);\\\"text\\\"==f&&(\\\"text-anchor\\\"==b&&(a.anchor=c,k=h.clientWidth,\\\"end\\\"==c&&(g.marginLeft=-k+\\\"px\\\"),\\\"middle\\\"==c&&(g.marginLeft=-(k/2)+\\r\\n\\\"px\\\",g.textAlign=\\\"center\\\"),\\\"start\\\"==c&&(g.marginLeft=\\\"0px\\\")),\\\"fill\\\"==b&&(g.color=c),\\\"font-weight\\\"==b&&(g.fontWeight=c));if(g=a.children)for(k=0;kc&&(g=\\\"dot\\\"),3<=c&&6>=c&&(g=\\\"dash\\\"),6g&&(b+=g);0>k&&(c+=k)}return{x:b,y:c,width:d,height:h}},setText:function(a,b){var c=a.node;c&&(c.innerHTML=b);this.setAttr(a,\\\"text-anchor\\\",a.anchor)},addListener:function(a,b,c){a.node[\\\"on\\\"+b]=c},move:function(a,b,c){var e=a.node,h=e.style;\\\"text\\\"==a.type&&(c-=d.removePx(h.fontSize)/2-1);\\\"oval\\\"==a.shapeType&&(b-=d.removePx(h.width)/2,c-=d.removePx(h.height)/2);a=a.bw;isNaN(a)||(b-=a,c-=a);isNaN(b)||isNaN(c)||(e.style.left=b+\\\"px\\\",e.style.top=\\r\\nc+\\\"px\\\")},svgPathToVml:function(a){var b=a.split(\\\" \\\");a=\\\"\\\";var c,d=Math.round,h;for(h=0;hthis.fontSize&&(this.ly=h/2-1);0p&&(p=z);w=w.height;w>t&&(t=w)}var z=t=0,A=f,C=0,D=0;for(B=0;BD&&(D=\\r\\nw.height);H+w.width>q&&0=l&&(z=0,t++,C=C+D+m,A=f,D=0);y.push(J)}w=y.getBBox();l=w.height+2*m-1;\\\"left\\\"==a||\\\"right\\\"==a?(n=w.width+2*f,k=n+b+c,g.style.width=k+\\\"px\\\",this.ieW=k):n=k-b-c-1;c=d.polygon(this.container,[0,n,n,0],[0,0,l,l],this.backgroundColor,this.backgroundAlpha,1,this.borderColor,this.borderAlpha);d.setCN(this.chart,c,\\\"legend-bg\\\");u.push(c);u.translate(b,e);c.toBack();b=f;if(\\\"top\\\"==a||\\\"bottom\\\"==a||\\\"absolute\\\"==\\r\\na||\\\"outside\\\"==a)\\\"center\\\"==this.align?b=f+(n-w.width)/2:\\\"right\\\"==this.align&&(b=f+n-w.width);y.translate(b,m+1);this.titleHeight>l&&(l=this.titleHeight);a=l+e+h+1;0>a&&(a=0);a>this.chart.divRealHeight&&(g.style.top=\\\"0px\\\");g.style.height=Math.round(a)+\\\"px\\\";r.setSize(this.divWidth,a)},createEntry:function(a){if(!1!==a.visibleInLegend&&!a.hideFromLegend){var b=this.chart,c=a.markerType;a.legendEntryWidth=this.markerSize;c||(c=this.markerType);var e=a.color,h=a.alpha;a.legendKeyColor&&(e=a.legendKeyColor());\\r\\na.legendKeyAlpha&&(h=a.legendKeyAlpha());var f;!0===a.hidden&&(f=e=this.markerDisabledColor);var g=a.pattern,k=a.customMarker;k||(k=this.customMarker);var l=this.container,m=this.markerSize,n=0,q=0,p=m/2;if(this.useGraphSettings){c=a.type;this.switchType=void 0;if(\\\"line\\\"==c||\\\"step\\\"==c||\\\"smoothedLine\\\"==c||\\\"ohlc\\\"==c)g=l.set(),a.hidden||(e=a.lineColorR,f=a.bulletBorderColorR),n=d.line(l,[0,2*m],[m/2,m/2],e,a.lineAlpha,a.lineThickness,a.dashLength),d.setCN(b,n,\\\"graph-stroke\\\"),g.push(n),a.bullet&&(a.hidden||\\r\\n(e=a.bulletColorR),n=d.bullet(l,a.bullet,a.bulletSize,e,a.bulletAlpha,a.bulletBorderThickness,f,a.bulletBorderAlpha))&&(d.setCN(b,n,\\\"graph-bullet\\\"),n.translate(m+1,m/2),g.push(n)),p=0,n=m,q=m/3;else{var t;a.getGradRotation&&(t=a.getGradRotation(),0===t&&(t=180));n=a.fillColorsR;!0===a.hidden&&(n=e);if(g=this.createMarker(\\\"rectangle\\\",n,a.fillAlphas,a.lineThickness,e,a.lineAlpha,t,g,a.dashLength))p=m,g.translate(p,m/2);n=m}d.setCN(b,g,\\\"graph-\\\"+c);d.setCN(b,g,\\\"graph-\\\"+a.id)}else if(k)g=l.image(k,0,0,\\r\\nm,m);else{var r;isNaN(this.gradientRotation)||(r=180+this.gradientRotation);(g=this.createMarker(c,e,h,void 0,void 0,void 0,r,g))&&g.translate(m/2,m/2)}d.setCN(b,g,\\\"legend-marker\\\");this.addListeners(g,a);l=l.set([g]);this.switchable&&a.switchable&&l.setAttr(\\\"cursor\\\",\\\"pointer\\\");void 0!==a.id&&d.setCN(b,l,\\\"legend-item-\\\"+a.id);d.setCN(b,l,a.className,!0);(f=this.switchType)&&\\\"none\\\"!=f&&0c&&(d=\\\"00\\\"+c);10<=c&&100>c&&(d=\\\"0\\\"+c);a=a.replace(/fff/g,d)}return a};d.extractPeriod=function(a){var b=d.stripNumbers(a),c=1;b!=a&&(c=Number(a.slice(0,a.indexOf(b))));return{period:b,count:c}};d.getDate=function(a,b,c){return a instanceof Date?d.newDate(a,c):b&&isNaN(a)?d.stringToDate(a,b):new Date(a)};d.daysInMonth=function(a){return(new Date(a.getYear(),a.getMonth()+\\r\\n1,0)).getDate()};d.newDate=function(a,b){return b&&-1==b.indexOf(\\\"fff\\\")?new Date(a):new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds())};d.resetDateToMin=function(a,b,c,e){void 0===e&&(e=1);var h,f,g,k,l,m,n;d.useUTC?(h=a.getUTCFullYear(),f=a.getUTCMonth(),g=a.getUTCDate(),k=a.getUTCHours(),l=a.getUTCMinutes(),m=a.getUTCSeconds(),n=a.getUTCMilliseconds(),a=a.getUTCDay()):(h=a.getFullYear(),f=a.getMonth(),g=a.getDate(),k=a.getHours(),l=\\r\\na.getMinutes(),m=a.getSeconds(),n=a.getMilliseconds(),a=a.getDay());switch(b){case \\\"YYYY\\\":h=Math.floor(h/c)*c;f=0;g=1;n=m=l=k=0;break;case \\\"MM\\\":f=Math.floor(f/c)*c;g=1;n=m=l=k=0;break;case \\\"WW\\\":g=a>=e?g-a+e:g-(7+a)+e;n=m=l=k=0;break;case \\\"DD\\\":n=m=l=k=0;break;case \\\"hh\\\":k=Math.floor(k/c)*c;n=m=l=0;break;case \\\"mm\\\":l=Math.floor(l/c)*c;n=m=0;break;case \\\"ss\\\":m=Math.floor(m/c)*c;n=0;break;case \\\"fff\\\":n=Math.floor(n/c)*c}d.useUTC?(a=new Date,a.setUTCFullYear(h,f,g),a.setUTCHours(k,l,m,n)):a=new Date(h,f,g,\\r\\nk,l,m,n);return a};d.getPeriodDuration=function(a,b){void 0===b&&(b=1);var c;switch(a){case \\\"YYYY\\\":c=316224E5;break;case \\\"MM\\\":c=26784E5;break;case \\\"WW\\\":c=6048E5;break;case \\\"DD\\\":c=864E5;break;case \\\"hh\\\":c=36E5;break;case \\\"mm\\\":c=6E4;break;case \\\"ss\\\":c=1E3;break;case \\\"fff\\\":c=1}return c*b};d.intervals={s:{nextInterval:\\\"ss\\\",contains:1E3},ss:{nextInterval:\\\"mm\\\",contains:60,count:0},mm:{nextInterval:\\\"hh\\\",contains:60,count:1},hh:{nextInterval:\\\"DD\\\",contains:24,count:2},DD:{nextInterval:\\\"\\\",contains:Infinity,count:3}};\\r\\nd.getMaxInterval=function(a,b){var c=d.intervals;return a>=c[b].contains?(a=Math.round(a/c[b].contains),b=c[b].nextInterval,d.getMaxInterval(a,b)):\\\"ss\\\"==b?c[b].nextInterval:b};d.dayNames=\\\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\\\".split(\\\" \\\");d.shortDayNames=\\\"Sun Mon Tue Wed Thu Fri Sat\\\".split(\\\" \\\");d.monthNames=\\\"January February March April May June July August September October November December\\\".split(\\\" \\\");d.shortMonthNames=\\\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\\\".split(\\\" \\\");\\r\\nd.getWeekNumber=function(a){a=new Date(a);a.setHours(0,0,0);a.setDate(a.getDate()+4-(a.getDay()||7));var b=new Date(a.getFullYear(),0,1);return Math.ceil(((a-b)/864E5+1)/7)};d.stringToDate=function(a,b){var c={},e=[{pattern:\\\"YYYY\\\",period:\\\"year\\\"},{pattern:\\\"YY\\\",period:\\\"year\\\"},{pattern:\\\"MM\\\",period:\\\"month\\\"},{pattern:\\\"M\\\",period:\\\"month\\\"},{pattern:\\\"DD\\\",period:\\\"date\\\"},{pattern:\\\"D\\\",period:\\\"date\\\"},{pattern:\\\"JJ\\\",period:\\\"hours\\\"},{pattern:\\\"J\\\",period:\\\"hours\\\"},{pattern:\\\"HH\\\",period:\\\"hours\\\"},{pattern:\\\"H\\\",period:\\\"hours\\\"},\\r\\n{pattern:\\\"KK\\\",period:\\\"hours\\\"},{pattern:\\\"K\\\",period:\\\"hours\\\"},{pattern:\\\"LL\\\",period:\\\"hours\\\"},{pattern:\\\"L\\\",period:\\\"hours\\\"},{pattern:\\\"NN\\\",period:\\\"minutes\\\"},{pattern:\\\"N\\\",period:\\\"minutes\\\"},{pattern:\\\"SS\\\",period:\\\"seconds\\\"},{pattern:\\\"S\\\",period:\\\"seconds\\\"},{pattern:\\\"QQQ\\\",period:\\\"milliseconds\\\"},{pattern:\\\"QQ\\\",period:\\\"milliseconds\\\"},{pattern:\\\"Q\\\",period:\\\"milliseconds\\\"}],h=!0,f=b.indexOf(\\\"AA\\\");-1!=f&&(a.substr(f,2),\\\"pm\\\"==a.toLowerCase&&(h=!1));var f=b,g,k,l;for(l=0;lr&&(r=\\\"0\\\"+r);b=b.replace(/JJ/g,r);b=b.replace(/J/g,q);r=k;0===r&&(r=24,-1!=b.indexOf(\\\"H\\\")&&(f--,0===f&&(e=new Date(a),e.setDate(e.getDate()-1),h=e.getMonth(),f=e.getDate(),e=e.getFullYear())));a=h+1;9>h&&(a=\\\"0\\\"+a);q=f;10>f&&(q=\\\"0\\\"+f);var u=r;10>u&&(u=\\\"0\\\"+u);b=b.replace(/HH/g,u);b=b.replace(/H/g,r);r=k;11u&&(u=\\\"0\\\"+u);b=b.replace(/KK/g,u);b=b.replace(/K/g,r);r=k;0===r&&(r=12);12u&&(u=\\\"0\\\"+u);b=b.replace(/LL/g,u);b=b.replace(/L/g,r);\\r\\nr=l;10>r&&(r=\\\"0\\\"+r);b=b.replace(/NN/g,r);b=b.replace(/N/g,l);l=m;10>l&&(l=\\\"0\\\"+l);b=b.replace(/SS/g,l);b=b.replace(/S/g,m);m=n;10>m&&(m=\\\"00\\\"+m);100>m&&(m=\\\"0\\\"+m);l=n;10>l&&(l=\\\"00\\\"+l);b=b.replace(/QQQ/g,m);b=b.replace(/QQ/g,l);b=b.replace(/Q/g,n);b=12>k?b.replace(/A/g,c.amString):b.replace(/A/g,c.pmString);b=b.replace(/YYYY/g,\\\"@IIII@\\\");b=b.replace(/YY/g,\\\"@II@\\\");b=b.replace(/MMMM/g,\\\"@XXXX@\\\");b=b.replace(/MMM/g,\\\"@XXX@\\\");b=b.replace(/MM/g,\\\"@XX@\\\");b=b.replace(/M/g,\\\"@X@\\\");b=b.replace(/DD/g,\\\"@RR@\\\");b=b.replace(/D/g,\\r\\n\\\"@R@\\\");b=b.replace(/EEEE/g,\\\"@PPPP@\\\");b=b.replace(/EEE/g,\\\"@PPP@\\\");b=b.replace(/EE/g,\\\"@PP@\\\");b=b.replace(/E/g,\\\"@P@\\\");b=b.replace(/@IIII@/g,e);b=b.replace(/@II@/g,p);b=b.replace(/@XXXX@/g,c.monthNames[h]);b=b.replace(/@XXX@/g,c.shortMonthNames[h]);b=b.replace(/@XX@/g,a);b=b.replace(/@X@/g,h+1);b=b.replace(/@RR@/g,q);b=b.replace(/@R@/g,f);b=b.replace(/@PPPP@/g,c.dayNames[g]);b=b.replace(/@PPP@/g,c.shortDayNames[g]);b=b.replace(/@PP@/g,t);return b=b.replace(/@P@/g,g)};d.changeDate=function(a,b,c,e,h){if(d.useUTC)return d.changeUTCDate(a,\\r\\nb,c,e,h);var f=-1;void 0===e&&(e=!0);void 0===h&&(h=!1);!0===e&&(f=1);switch(b){case \\\"YYYY\\\":a.setFullYear(a.getFullYear()+c*f);e||h||a.setDate(a.getDate()+1);break;case \\\"MM\\\":b=a.getMonth();a.setMonth(a.getMonth()+c*f);a.getMonth()>b+c*f&&a.setDate(a.getDate()-1);e||h||a.setDate(a.getDate()+1);break;case \\\"DD\\\":a.setDate(a.getDate()+c*f);break;case \\\"WW\\\":a.setDate(a.getDate()+c*f*7);break;case \\\"hh\\\":a.setHours(a.getHours()+c*f);break;case \\\"mm\\\":a.setMinutes(a.getMinutes()+c*f);break;case \\\"ss\\\":a.setSeconds(a.getSeconds()+\\r\\nc*f);break;case \\\"fff\\\":a.setMilliseconds(a.getMilliseconds()+c*f)}return a};d.changeUTCDate=function(a,b,c,d,h){var f=-1;void 0===d&&(d=!0);void 0===h&&(h=!1);!0===d&&(f=1);switch(b){case \\\"YYYY\\\":a.setUTCFullYear(a.getUTCFullYear()+c*f);d||h||a.setUTCDate(a.getUTCDate()+1);break;case \\\"MM\\\":b=a.getUTCMonth();a.setUTCMonth(a.getUTCMonth()+c*f);a.getUTCMonth()>b+c*f&&a.setUTCDate(a.getUTCDate()-1);d||h||a.setUTCDate(a.getUTCDate()+1);break;case \\\"DD\\\":a.setUTCDate(a.getUTCDate()+c*f);break;case \\\"WW\\\":a.setUTCDate(a.getUTCDate()+\\r\\nc*f*7);break;case \\\"hh\\\":a.setUTCHours(a.getUTCHours()+c*f);break;case \\\"mm\\\":a.setUTCMinutes(a.getUTCMinutes()+c*f);break;case \\\"ss\\\":a.setUTCSeconds(a.getUTCSeconds()+c*f);break;case \\\"fff\\\":a.setUTCMilliseconds(a.getUTCMilliseconds()+c*f)}return a}})();\"\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(19)(__webpack_require__(22))\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"AmCharts.translations.es = {\\\"monthNames\\\":[\\\"Enero\\\",\\\"Febrero\\\",\\\"Marzo\\\",\\\"Abril\\\",\\\"Mayo\\\",\\\"Junio\\\",\\\"Julio\\\",\\\"Agosto\\\",\\\"Septiembre\\\",\\\"Octubre\\\",\\\"Noviembre\\\",\\\"Diciembre\\\"],\\\"shortMonthNames\\\":[\\\"Ene\\\",\\\"Feb\\\",\\\"Mar\\\",\\\"Abr\\\",\\\"May\\\",\\\"Jun\\\",\\\"Jul\\\",\\\"Ago\\\",\\\"Sep\\\",\\\"Oct\\\",\\\"Nov\\\",\\\"Dic\\\"],\\\"dayNames\\\":[\\\"Domingo\\\",\\\"Lunes\\\",\\\"Martes\\\",\\\"Miércoles\\\",\\\"Jueves\\\",\\\"Viernes\\\",\\\"Sábado\\\"],\\\"shortDayNames\\\":[\\\"Dom\\\",\\\"Lun\\\",\\\"Mar\\\",\\\"Mié\\\",\\\"Jue\\\",\\\"Vie\\\",\\\"Sáb\\\"],\\\"zoomOutText\\\":\\\"Mostrar todos\\\"}\"\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(19)(__webpack_require__(24))\n\n/***/ },\n/* 24 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"(function(){var k=window.AmCharts;k.AmSlicedChart=k.Class({inherits:k.AmChart,construct:function(a){this.createEvents(\\\"rollOverSlice\\\",\\\"rollOutSlice\\\",\\\"clickSlice\\\",\\\"pullOutSlice\\\",\\\"pullInSlice\\\",\\\"rightClickSlice\\\");k.AmSlicedChart.base.construct.call(this,a);this.colors=\\\"#FF0F00 #FF6600 #FF9E01 #FCD202 #F8FF01 #B0DE09 #04D215 #0D8ECF #0D52D1 #2A0CD0 #8A0CCF #CD0D74 #754DEB #DDDDDD #999999 #333333 #000000 #57032A #CA9726 #990000 #4B0C25\\\".split(\\\" \\\");this.alpha=1;this.groupPercent=0;this.groupedTitle=\\\"Other\\\";\\r\\nthis.groupedPulled=!1;this.groupedAlpha=1;this.marginLeft=0;this.marginBottom=this.marginTop=10;this.marginRight=0;this.hoverAlpha=1;this.outlineColor=\\\"#FFFFFF\\\";this.outlineAlpha=0;this.outlineThickness=1;this.startAlpha=0;this.startDuration=1;this.startEffect=\\\"bounce\\\";this.sequencedAnimation=!0;this.pullOutDuration=1;this.pullOutEffect=\\\"bounce\\\";this.pullOnHover=this.pullOutOnlyOne=!1;this.labelsEnabled=!0;this.labelTickColor=\\\"#000000\\\";this.labelTickAlpha=.2;this.hideLabelsPercent=0;this.urlTarget=\\r\\n\\\"_self\\\";this.autoMarginOffset=10;this.gradientRatio=[];this.maxLabelWidth=200;k.applyTheme(this,a,\\\"AmSlicedChart\\\")},initChart:function(){k.AmSlicedChart.base.initChart.call(this);this.dataChanged&&(this.parseData(),this.dispatchDataUpdated=!0,this.dataChanged=!1,this.setLegendData(this.chartData));this.drawChart()},handleLegendEvent:function(a){var b=a.type,c=a.dataItem,d=this.legend;if(!d.data&&c){var g=c.hidden;a=a.event;switch(b){case \\\"clickMarker\\\":g||d.switchable||this.clickSlice(c,a);break;case \\\"clickLabel\\\":g||\\r\\nthis.clickSlice(c,a,!1);break;case \\\"rollOverItem\\\":g||this.rollOverSlice(c,!1,a);break;case \\\"rollOutItem\\\":g||this.rollOutSlice(c,a);break;case \\\"hideItem\\\":this.hideSlice(c,a);break;case \\\"showItem\\\":this.showSlice(c,a)}}},invalidateVisibility:function(){this.recalculatePercents();this.initChart();var a=this.legend;a&&a.invalidateSize()},addEventListeners:function(a,b){var c=this;a.mouseover(function(a){c.rollOverSlice(b,!0,a)}).mouseout(function(a){c.rollOutSlice(b,a)}).touchend(function(a){c.rollOverSlice(b,\\r\\na)}).touchstart(function(a){}).mouseup(function(a){c.clickSlice(b,a)}).contextmenu(function(a){c.handleRightClick(b,a)})},formatString:function(a,b,c){a=k.formatValue(a,b,[\\\"value\\\"],this.nf,\\\"\\\",this.usePrefixes,this.prefixesOfSmallNumbers,this.prefixesOfBigNumbers);var d=this.pf.precision;isNaN(this.tempPrec)||(this.pf.precision=this.tempPrec);a=k.formatValue(a,b,[\\\"percents\\\"],this.pf);a=k.massReplace(a,{\\\"[[title]]\\\":b.title,\\\"[[description]]\\\":b.description});this.pf.precision=d;-1!=a.indexOf(\\\"[[\\\")&&(a=\\r\\nk.formatDataContextValue(a,b.dataContext));a=c?k.fixNewLines(a):k.fixBrakes(a);return a=k.cleanFromEmpty(a)},startSlices:function(){var a;for(a=0;athis.hoverAlpha&&a.wedge&&a.wedge.attr({opacity:this.hoverAlpha});var d=a.balloonX,g=a.balloonY;a.pulled&&(d+=a.pullX,g+=a.pullY);var f=this.formatString(this.balloonText,a,!0),h=this.balloonFunction;h&&(f=h(a,f));h=k.adjustLuminosity(a.color,-.15);f?this.showBalloon(f,h,b,d,g):this.hideBalloon();0===a.value&&this.hideBalloon();this.fire({type:\\\"rollOverSlice\\\",dataItem:a,chart:this,event:c})}},rollOutSlice:function(a,b){isNaN(a)||(a=this.chartData[a]);a.wedge&&a.wedge.attr({opacity:1});this.hideBalloon();\\r\\nthis.fire({type:\\\"rollOutSlice\\\",dataItem:a,chart:this,event:b})},clickSlice:function(a,b,c){isNaN(a)||(a=this.chartData[a]);a.pulled?this.pullSlice(a,0):this.pullSlice(a,1);k.getURL(a.url,this.urlTarget);c||this.fire({type:\\\"clickSlice\\\",dataItem:a,chart:this,event:b})},handleRightClick:function(a,b){isNaN(a)||(a=this.chartData[a]);this.fire({type:\\\"rightClickSlice\\\",dataItem:a,chart:this,event:b})},drawTicks:function(){var a=this.chartData,b;for(b=0;bb&&(b=g);d.remove()}return b}})})();(function(){var k=window.AmCharts;k.AmPieChart=k.Class({inherits:k.AmSlicedChart,construct:function(a){this.type=\\\"pie\\\";k.AmPieChart.base.construct.call(this,a);this.cname=\\\"AmPieChart\\\";this.pieBrightnessStep=30;this.minRadius=10;this.depth3D=0;this.startAngle=90;this.angle=this.innerRadius=0;this.startRadius=\\\"500%\\\";this.pullOutRadius=\\\"20%\\\";this.labelRadius=20;this.labelText=\\\"[[title]]: [[percents]]%\\\";this.balloonText=\\\"[[title]]: [[percents]]% ([[value]])\\\\n[[description]]\\\";this.previousScale=1;this.adjustPrecision=\\r\\n!1;this.gradientType=\\\"radial\\\";k.applyTheme(this,a,this.cname)},drawChart:function(){k.AmPieChart.base.drawChart.call(this);var a=this.chartData;if(k.ifArray(a)){if(0this.maxLabelWidth&&(p=this.maxLabelWidth);this.labelText&&this.labelsEnabled||(x=p=0);A=void 0===this.pieX?(d-h-e)/2+h:f(this.pieX,this.realWidth);B=void 0===this.pieY?(g-z-n)/2+z:f(this.pieY,g);l=f(this.radius,d,g);l||(d=0<=x?d-h-e-2*p:d-h-e,g=g-z-n,l=Math.min(d,g),gd&&(l=d)),g=k.toCoordinate(this.pullOutRadius,l),l=(0<=x?l-1.8*(x+g):l-1.8*g)/2);l=l&&(f=l-1);n=k.fitToBounds(this.startAngle,0,360);0=this.hideLabelsPercent){var m=n+r/2;0>m&&(m+=360);360t&&(e.skipTick=!0));var r=A+p*(l+t),E=B+C*(l+t),w,u=0;isNaN(D)&&350=m&&0<=m?(y=0,w=\\\"start\\\",u=8):90<=m&&180>m?(y=1,w=\\\"start\\\",u=8):\\r\\n180<=m&&270>m?(y=2,w=\\\"end\\\",u=-8):270<=m&&354>=m?(y=3,w=\\\"end\\\",u=-8):354<=m&&(h>D?(y=0,w=\\\"start\\\",u=8):(y=3,w=\\\"end\\\",u=-8));e.labelQuarter=y}else w=\\\"middle\\\";m=this.formatString(this.labelText,e);(t=this.labelFunction)&&(m=t(e,m));t=e.labelColor;t||(t=this.color);\\\"\\\"!==m&&(m=k.wrappedText(c,m,t,this.fontFamily,this.fontSize,w,!1,this.maxLabelWidth),k.setCN(this,m,\\\"pie-label\\\"),k.setCN(this,m,e.className,!0),m.translate(r+1.5*u,E),m.node.style.pointerEvents=\\\"none\\\",e.ty=E,e.textX=r+1.5*u,v.push(m),this.axesSet.push(v),\\r\\ne.labelSet=v,e.label=m);e.tx=r;e.tx2=r+u;e.tx0=A+p*l;e.ty0=B+C*l}r=f+(l-f)/2;e.pulled&&(r+=this.pullOutRadiusReal);e.balloonX=p*r+A;e.balloonY=C*r+B;e.startX=Math.round(p*z);e.startY=Math.round(C*z);e.pullX=Math.round(p*g);e.pullY=Math.round(C*g);this.graphsSet.push(q);if(0===e.alpha||0c?d.toFront():180<=c&&d.toBack()}},arrangeLabels:function(){var a=this.chartData,b=a.length,c,d;for(d=b-1;0<=d;d--)c=a[d],0!==c.labelQuarter||c.hidden||this.checkOverlapping(d,c,0,!0,0);for(d=0;dg&&isNaN(b.labelRadius)&&(f=b.ty+3*b.iy,b.ty=f,n.translate(b.textX,\\r\\nf),this.checkOverlapping(a,b,c,d,g+1))}},checkOverlappingReal:function(a,b,c){var d=!1,g=a.label,f=b.label;a.labelQuarter!=c||a.hidden||b.hidden||!f||(g=g.getBBox(),c={},c.width=g.width,c.height=g.height,c.y=a.ty,c.x=a.tx,a=f.getBBox(),f={},f.width=a.width,f.height=a.height,f.y=b.ty,f.x=b.tx,k.hitTest(c,f)&&(d=!0));return d}})})();\"\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(19)(__webpack_require__(26))\n\n/***/ },\n/* 26 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"(function(){var e=window.AmCharts;e.AmRectangularChart=e.Class({inherits:e.AmCoordinateChart,construct:function(a){e.AmRectangularChart.base.construct.call(this,a);this.theme=a;this.createEvents(\\\"zoomed\\\",\\\"changed\\\");this.marginRight=this.marginBottom=this.marginTop=this.marginLeft=20;this.depth3D=this.angle=0;this.plotAreaFillColors=\\\"#FFFFFF\\\";this.plotAreaFillAlphas=0;this.plotAreaBorderColor=\\\"#000000\\\";this.plotAreaBorderAlpha=0;this.maxZoomFactor=20;this.zoomOutButtonImageSize=19;this.zoomOutButtonImage=\\r\\n\\\"lens\\\";this.zoomOutText=\\\"Show all\\\";this.zoomOutButtonColor=\\\"#e5e5e5\\\";this.zoomOutButtonAlpha=0;this.zoomOutButtonRollOverAlpha=1;this.zoomOutButtonPadding=8;this.trendLines=[];this.autoMargins=!0;this.marginsUpdated=!1;this.autoMarginOffset=10;e.applyTheme(this,a,\\\"AmRectangularChart\\\")},initChart:function(){e.AmRectangularChart.base.initChart.call(this);this.updateDxy();!this.marginsUpdated&&this.autoMargins&&(this.resetMargins(),this.drawGraphs=!1);this.processScrollbars();this.updateMargins();this.updatePlotArea();\\r\\nthis.updateScrollbars();this.updateTrendLines();this.updateChartCursor();this.updateValueAxes();this.scrollbarOnly||this.updateGraphs()},drawChart:function(){e.AmRectangularChart.base.drawChart.call(this);this.drawPlotArea();if(e.ifArray(this.chartData)){var a=this.chartCursor;a&&a.draw()}},resetMargins:function(){var a={},b;if(\\\"xy\\\"==this.type){var c=this.xAxes,d=this.yAxes;for(b=0;b=g-c&&\\r\\n(this.marginRight=Math.round(l-g+c));d.top&&eh-c&&(this.marginBottom=Math.round(this.marginBottom+b-h+c));this.initChart()},getAxisBounds:function(a,b,c,d,g){if(!a.ignoreAxisWidth){var e=a.labelsSet,f=a.tickLength;a.inside&&(f=0);if(e)switch(e=a.getBBox(),a.position){case \\\"top\\\":a=e.y;d>a&&(d=a);break;case \\\"bottom\\\":a=e.y+e.height;ga&&(b=a)}}return{l:b,t:d,r:c,b:g}},drawZoomOutButton:function(){var a=this;if(!a.zbSet){var b=a.container.set();a.zoomButtonSet.push(b);var c=a.color,d=a.fontSize,g=a.zoomOutButtonImageSize,h=a.zoomOutButtonImage.replace(/\\\\.[a-z]*$/i,\\\"\\\"),f=e.lang.zoomOutText||a.zoomOutText,k=a.zoomOutButtonColor,l=a.zoomOutButtonAlpha,m=a.zoomOutButtonFontSize,q=a.zoomOutButtonPadding;isNaN(m)||(d=m);(m=a.zoomOutButtonFontColor)&&(c=m);var m=a.zoomOutButton,n;m&&(m.fontSize&&(d=m.fontSize),m.color&&(c=m.color),\\r\\nm.backgroundColor&&(k=m.backgroundColor),isNaN(m.backgroundAlpha)||(a.zoomOutButtonRollOverAlpha=m.backgroundAlpha));var p=m=0;void 0!==a.pathToImages&&h&&(n=a.container.image(a.pathToImages+h+a.extension,0,0,g,g),e.setCN(a,n,\\\"zoom-out-image\\\"),b.push(n),n=n.getBBox(),m=n.width+5);void 0!==f&&(c=e.text(a.container,f,c,a.fontFamily,d,\\\"start\\\"),e.setCN(a,c,\\\"zoom-out-label\\\"),d=c.getBBox(),p=n?n.height/2-3:d.height/2,c.translate(m,p),b.push(c));n=b.getBBox();c=1;e.isModern||(c=0);k=e.rect(a.container,n.width+\\r\\n2*q+5,n.height+2*q-2,k,1,1,k,c);k.setAttr(\\\"opacity\\\",l);k.translate(-q,-q);e.setCN(a,k,\\\"zoom-out-bg\\\");b.push(k);k.toBack();a.zbBG=k;n=k.getBBox();b.translate(a.marginLeftReal+a.plotAreaWidth-n.width+q,a.marginTopReal+q);b.hide();b.mouseover(function(){a.rollOverZB()}).mouseout(function(){a.rollOutZB()}).click(function(){a.clickZB()}).touchstart(function(){a.rollOverZB()}).touchend(function(){a.rollOutZB();a.clickZB()});for(l=0;la&&(a=1);1>b&&(b=1);this.plotAreaWidth=Math.round(a);this.plotAreaHeight=Math.round(b);this.plotBalloonsSet.translate(c,d)},updateDxy:function(){this.dx=\\r\\nMath.round(this.depth3D*Math.cos(this.angle*Math.PI/180));this.dy=Math.round(-this.depth3D*Math.sin(this.angle*Math.PI/180));this.d3x=Math.round(this.columnSpacing3D*Math.cos(this.angle*Math.PI/180));this.d3y=Math.round(-this.columnSpacing3D*Math.sin(this.angle*Math.PI/180))},updateMargins:function(){var a=this.getTitleHeight();this.titleHeight=a;this.marginTopReal=this.marginTop-this.dy;this.fixMargins&&!this.fixMargins.top&&(this.marginTopReal+=a);this.marginBottomReal=this.marginBottom;this.marginLeftReal=\\r\\nthis.marginLeft;this.marginRightReal=this.marginRight},updateValueAxes:function(){var a=this.valueAxes,b;for(b=0;bd)var g=c,c=d,d=g;this.relativeZoomValueAxes(b,c,d);this.updateAfterValueZoom()},updateAfterValueZoom:function(){this.zoomAxesAndGraphs();\\r\\nthis.zoomScrollbar()},relativeZoomValueAxes:function(a,b,c){b=e.fitToBounds(b,0,1);c=e.fitToBounds(c,0,1);if(b>c){var d=b;b=c;c=d}var d=1/this.maxZoomFactor,g=e.getDecimals(d)+4;c-ba?d?(f=this.endTime-this.startTime,d=this.startTime+c*g,g=this.endTime+e*g,0=k&&(g=k,d=k-f),this.zoomToDates(new Date(d),new Date(g))):(0=f-1&&(c=e=0),d=this.start+\\r\\nc,g=this.end+e,this.zoomToIndexes(d,g)):d?(f=this.endTime-this.startTime,d=this.startTime-c*g,g=this.endTime-e*g,0this.start&&(c=e=0),d=this.start-c,g=this.end-e,this.zoomToIndexes(d,g))}},validateData:function(a){this.marginsUpdated=!1;this.zoomOutOnDataUpdate&&!a&&(this.endTime=this.end=this.startTime=this.start=NaN);e.AmSerialChart.base.validateData.call(this)},drawChart:function(){if(0c&&(a=b-c),a!=this.startTime&&b-a>c&&(b=a+c));var d=this.minSelectedTime;if(0k&&(a=k);bk&&(b=k);bthis.firstTime&&(a=!0),this.endTimec&&(a=b-c),a!=this.start&&b-a>c&&(b=a+c));if(a!=this.start||b!=this.end){var d=this.chartData.length-1;isNaN(a)&&(a=0,isNaN(c)||(a=d-c));isNaN(b)&&(b=d);bd&&(b=d);a>d&&(a=d-1);0>a&&\\r\\n(a=0);this.start=a;this.end=b;this.categoryAxis.zoom(a,b);this.zoomAxesAndGraphs();this.zoomScrollbar();this.fixCursor();0!==a||b!=this.chartData.length-1?this.showZB(!0):this.showZB(!1);this.updateColumnsDepth();this.dispatchIndexZoomEvent()}},updateGraphs:function(){e.AmSerialChart.base.updateGraphs.call(this);var a=this.graphs,b;for(b=0;bb.depth?1:-1},zoomScrollbar:function(){var a=this.chartScrollbar,b=this.categoryAxis;if(a){if(!this.zoomedByScrollbar){var c=a.dragger;c&&c.stop()}this.zoomedByScrollbar=!1;b.parseDates&&!b.equalSpacing?a.timeZoom(this.startTime,this.endTime):a.zoom(this.start,this.end)}this.zoomValueScrollbar(this.valueScrollbar)},updateTrendLines:function(){var a=this.trendLines,b;for(b=0;be&&(e=0);h>a.length-1&&(h=a.length-1);var f=e+Math.round((h-e)/2),k=a[f][b];return c==k?f:1>=h-e?d?e:Math.abs(a[e][b]-c)a&&(a=0),b>d-1&&(b=d-1),d=this.categoryAxis,d.parseDates&&!d.equalSpacing?this.zoom(c[a].time,this.getEndTime(c[b].time)):this.zoom(a,\\r\\nb))}},zoomToDates:function(a,b){var c=this.chartData;if(c)if(this.categoryAxis.equalSpacing){var d=this.getClosestIndex(c,\\\"time\\\",a.getTime(),!0,0,c.length);b=e.resetDateToMin(b,this.categoryAxis.minPeriod,1);c=this.getClosestIndex(c,\\\"time\\\",b.getTime(),!1,0,c.length);this.zoom(d,c)}else this.zoom(a.getTime(),b.getTime())},zoomToCategoryValues:function(a,b){this.chartData&&this.zoom(this.getCategoryIndexByValue(a),this.getCategoryIndexByValue(b))},formatPeriodString:function(a,b){if(b){var c=[\\\"value\\\",\\r\\n\\\"open\\\",\\\"low\\\",\\\"high\\\",\\\"close\\\"],d=\\\"value open low high close average sum count\\\".split(\\\" \\\"),g=b.valueAxis,h=this.chartData,f=b.numberFormatter;f||(f=this.nf);for(var k=0;ky.x||y.x>y.graph.height)D=NaN}else if(0>y.x||y.x>y.graph.width)D=NaN;if(!isNaN(D)){isNaN(n)&&(n=D);p=D;if(isNaN(x)||x>D)x=D;if(isNaN(u)||u<\\r\\nD)u=D;B=e.getDecimals(m);var F=e.getDecimals(D),m=m+D,m=e.roundTo(m,Math.max(B,F));q++;B=m/q}}if(y.percents&&(y=y.percents[l],!isNaN(y))){isNaN(C)&&(C=y);v=y;if(isNaN(w)||w>y)w=y;if(isNaN(A)||Ab&&0===q&&(q=180):0>c&&270==q&&(q=90);this.gradientRotation=q;0===d&&0===e&&(this.cornerRadius=n);this.draw()},draw:function(){var a=this.set;a.clear();\\r\\nvar b=this.container,c=b.chart,d=this.w,g=this.h,h=this.dx,f=this.dy,k=this.colors,l=this.alpha,m=this.bwidth,q=this.bcolor,n=this.balpha,p=this.gradientRotation,x=this.cornerRadius,u=this.dashLength,B=this.pattern,r=this.topRadius,t=this.bcn,C=k,v=k;\\\"object\\\"==typeof k&&(C=k[0],v=k[k.length-1]);var w,A,z,G,y,D,F,L,M,Q=l;B&&(l=0);var E,H,I,J,K=this.rotate;if(0Math.abs(g)&&(g=0);1>Math.abs(d)&&(d=0);!isNaN(r)&&(0g&&(m=\\\" A\\\"),l+=m+Math.round(d/2-I)+\\\",\\\"+Math.round(g-J)+\\\",\\\"+Math.round(d/2+I)+\\\",\\\"+Math.round(g+J)+\\\",0,\\\"+g+\\\",\\\"+d+\\\",\\\"+g,l+=\\\" L\\\"+d+\\\",0\\\",l+=m+Math.round(d/\\r\\n2+E)+\\\",\\\"+Math.round(H)+\\\",\\\"+Math.round(d/2-E)+\\\",\\\"+Math.round(-H)+\\\",\\\"+d+\\\",0,0,0\\\"):(l+=\\\"A\\\"+I+\\\",\\\"+J+\\\",0,0,0,\\\"+(d-d/2*(1-r))+\\\",\\\"+g+\\\"L\\\"+d+\\\",0\\\",l+=\\\"A\\\"+E+\\\",\\\"+H+\\\",0,0,1,0,0\\\"),E=180),b=b.path(l).attr(k),b.gradient(\\\"linearGradient\\\",[C,e.adjustLuminosity(C,-.3),e.adjustLuminosity(C,-.3),C],E),K?b.translate(h/2,0):b.translate(0,f/2)):b=0===g?e.line(b,[0,d],[0,0],q,n,m,u):0===d?e.line(b,[0,0],[0,g],q,n,m,u):0g?[w,\\r\\nM,A,z,G,y,D,F,L,b]:[F,L,A,z,G,y,w,M,D,b]:K?0g?[w,b,F]:[F,b,w];e.setCN(c,b,t+\\\"front\\\");e.setCN(c,A,t+\\\"back\\\");e.setCN(c,F,t+\\\"top\\\");e.setCN(c,w,t+\\\"bottom\\\");e.setCN(c,G,t+\\\"left\\\");e.setCN(c,y,t+\\\"right\\\");for(w=0;wb&&(this.endTime=b);t=this.minorGridEnabled;B=this.gridAlpha;var v,w=0,A=0;if(this.widthField)for(b=this.start;b<=this.end;b++)if(v=this.data[b]){var z=Number(this.data[b].dataContext[this.widthField]);isNaN(z)||(w+=z,v.widthValue=z)}if(this.parseDates&&!this.equalSpacing)this.lastTime=a[a.length-1].time,this.maxTime=e.resetDateToMin(new Date(this.lastTime+1.05*x),this.minPeriod,\\r\\n1,q).getTime(),this.timeDifference=this.endTime-this.startTime,this.parseDatesDraw();else if(!this.parseDates){if(this.cellWidth=this.getStepWidth(f),fp&&(p=0),v=0,this.widthField&&(p=this.start),this.end-p+1>=this.autoRotateCount&&(this.labelRotationR=this.autoRotateAngle),b=p;b<=this.end+2;b++){n=!1;0<=b&&bthis.end&&\\\"start\\\"==this.tickPosition&&(p=\\\" \\\");this.rotate&&this.inside&&(r-=2);isNaN(u.widthValue)||(u.percentWidthValue=u.widthValue/w*100,z=this.rotate?this.height*u.widthValue/w:this.width*u.widthValue/w,q=A,A+=z,r=z/2);r=new this.axisItemRenderer(this,q,p,n,z,r,void 0,x,a,!1,u.labelColor,u.className);r.serialDataItem=u;this.pushAxisItem(r);this.gridAlpha=\\r\\nB}}else if(this.parseDates&&this.equalSpacing){h=this.start;this.startTime=this.data[this.start].time;this.endTime=this.data[this.end].time;this.timeDifference=this.endTime-this.startTime;b=this.choosePeriod(0);g=b.period;u=b.count;b=e.getPeriodDuration(g,u);bp&&(p=0);A=this.end+2;A>=this.data.length&&(A=this.data.length);v=!1;v=!l;this.previousPos=-1E3;20=a){q=this.getCoordinate(b-this.start);t=!1;this.nextPeriod[B]&&(t=this.checkPeriodChange(this.nextPeriod[B],1,f,x,B));x=!1;t&&this.markPeriodChange?(t=this.dateFormatsObject[this.nextPeriod[B]],x=!0):t=this.dateFormatsObject[B];p=e.formatDate(new Date(f),t,c);if(b==d&&!l||b==k&&!m)p=\\\" \\\";v?v=!1:(n||(x=!1),q-this.previousPos>this.safeDistance*Math.cos(this.labelRotationR*Math.PI/180)&&(this.labelFunction&&\\r\\n(p=this.labelFunction(p,new Date(f),this,g,u,r)),this.boldLabels&&(x=!0),r=new this.axisItemRenderer(this,q,p,void 0,void 0,void 0,void 0,x),t=r.graphics(),this.pushAxisItem(r),t=t.getBBox().width,e.isModern||(t-=q),this.previousPos=q+t));r=x=f}}for(b=l=0;bthis.height+1&&h--:k>this.width+1&&h--;0>k&&h++;return h=e.fitToBounds(h,0,b.length-1)},dateToCoordinate:function(a){return this.parseDates&&!this.equalSpacing?(a.getTime()-this.startTime)*this.stepWidth:this.parseDates&&this.equalSpacing?(a=this.chart.getClosestIndex(this.data,\\r\\n\\\"time\\\",a.getTime(),!1,0,this.data.length-1),this.getCoordinate(a-this.start)):NaN},categoryToCoordinate:function(a){if(this.chart){var b=this.chart.getCategoryIndexByValue(a);if(!isNaN(b))return this.getCoordinate(b-this.start);if(this.parseDates)return this.dateToCoordinate(new Date(a))}else return NaN},coordinateToDate:function(a){return this.equalSpacing?(a=this.xToIndex(a),new Date(this.data[a].time)):new Date(this.startTime+a/this.stepWidth)},coordinateToValue:function(a){a=this.xToIndex(a);\\r\\nif(a=this.data[a])return this.parseDates?a.time:a.category},getCoordinate:function(a){a*=this.stepWidth;this.startOnAxis||(a+=this.stepWidth/2);return Math.round(a)},formatValue:function(a,b){b||(b=this.currentDateFormat);this.parseDates&&(a=e.formatDate(new Date(a),b,this.chart));return a},showBalloonAt:function(a){a=this.parseDates?this.dateToCoordinate(new Date(a)):this.categoryToCoordinate(a);return this.adjustBalloonCoordinate(a)},formatBalloonText:function(a,b,c){var d=\\\"\\\",g=\\\"\\\",h=this.chart,\\r\\nf=this.data[b];if(f)if(this.parseDates)d=e.formatDate(f.category,c,h),b=e.changeDate(new Date(f.category),this.minPeriod,1),g=e.formatDate(b,c,h),-1!=d.indexOf(\\\"fff\\\")&&(d=e.formatMilliseconds(d,f.category),g=e.formatMilliseconds(g,b));else{var k;this.data[b+1]&&(k=this.data[b+1]);d=e.fixNewLines(f.category);k&&(g=e.fixNewLines(k.category))}a=a.replace(/\\\\[\\\\[category\\\\]\\\\]/g,String(d));return a=a.replace(/\\\\[\\\\[toCategory\\\\]\\\\]/g,String(g))},adjustBalloonCoordinate:function(a,b){var c=this.xToIndex(a),d=\\r\\nthis.chart.chartCursor;if(this.stickBalloonToCategory){var e=this.data[c];e&&(a=e.x[this.id]);this.stickBalloonToStart&&(a-=this.cellWidth/2);var h=0;if(d){var f=d.limitToGraph;f&&(h=e.axes[f.valueAxis.id].graphs[f.id].y);this.rotate?(\\\"left\\\"==this.position?(f&&(h-=d.width),0h&&(h=0),d.fixHLine(a,h)):(\\\"top\\\"==this.position?(f&&(h-=d.height),0h&&(h=0),d.fixVLine(a,h))}}d&&!b&&(d.setIndex(c),this.parseDates&&d.setTimestamp(this.coordinateToDate(a).getTime()));return a}})})();\"\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(19)(__webpack_require__(28))\n\n/***/ },\n/* 28 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"AmCharts.themes.light = {\\r\\n\\r\\n\\tthemeName:\\\"light\\\",\\r\\n\\r\\n\\tAmChart: {\\r\\n\\t\\tcolor: \\\"#000000\\\", backgroundColor: \\\"#FFFFFF\\\"\\r\\n\\t},\\r\\n\\r\\n\\tAmCoordinateChart: {\\r\\n\\t\\tcolors: [\\\"#67b7dc\\\", \\\"#fdd400\\\", \\\"#84b761\\\", \\\"#cc4748\\\", \\\"#cd82ad\\\", \\\"#2f4074\\\", \\\"#448e4d\\\", \\\"#b7b83f\\\", \\\"#b9783f\\\", \\\"#b93e3d\\\", \\\"#913167\\\"]\\r\\n\\t},\\r\\n\\r\\n\\tAmStockChart: {\\r\\n\\t\\tcolors: [\\\"#67b7dc\\\", \\\"#fdd400\\\", \\\"#84b761\\\", \\\"#cc4748\\\", \\\"#cd82ad\\\", \\\"#2f4074\\\", \\\"#448e4d\\\", \\\"#b7b83f\\\", \\\"#b9783f\\\", \\\"#b93e3d\\\", \\\"#913167\\\"]\\r\\n\\t},\\r\\n\\r\\n\\tAmSlicedChart: {\\r\\n\\t\\tcolors: [\\\"#67b7dc\\\", \\\"#fdd400\\\", \\\"#84b761\\\", \\\"#cc4748\\\", \\\"#cd82ad\\\", \\\"#2f4074\\\", \\\"#448e4d\\\", \\\"#b7b83f\\\", \\\"#b9783f\\\", \\\"#b93e3d\\\", \\\"#913167\\\"],\\r\\n\\t\\toutlineAlpha: 1,\\r\\n\\t\\toutlineThickness: 2,\\r\\n\\t\\tlabelTickColor: \\\"#000000\\\",\\r\\n\\t\\tlabelTickAlpha: 0.3\\r\\n\\t},\\r\\n\\r\\n\\tAmRectangularChart: {\\r\\n\\t\\tzoomOutButtonColor: '#000000',\\r\\n\\t\\tzoomOutButtonRollOverAlpha: 0.15,\\r\\n\\t\\tzoomOutButtonImage: \\\"lens\\\"\\r\\n\\t},\\r\\n\\r\\n\\tAxisBase: {\\r\\n\\t\\taxisColor: \\\"#000000\\\",\\r\\n\\t\\taxisAlpha: 0.3,\\r\\n\\t\\tgridAlpha: 0.1,\\r\\n\\t\\tgridColor: \\\"#000000\\\"\\r\\n\\t},\\r\\n\\r\\n\\tChartScrollbar: {\\r\\n\\t\\tbackgroundColor: \\\"#000000\\\",\\r\\n\\t\\tbackgroundAlpha: 0.12,\\r\\n\\t\\tgraphFillAlpha: 0.5,\\r\\n\\t\\tgraphLineAlpha: 0,\\r\\n\\t\\tselectedBackgroundColor: \\\"#FFFFFF\\\",\\r\\n\\t\\tselectedBackgroundAlpha: 0.4,\\r\\n\\t\\tgridAlpha: 0.15\\r\\n\\t},\\r\\n\\r\\n\\tChartCursor: {\\r\\n\\t\\tcursorColor: \\\"#000000\\\",\\r\\n\\t\\tcolor: \\\"#FFFFFF\\\",\\r\\n\\t\\tcursorAlpha: 0.5\\r\\n\\t},\\r\\n\\r\\n\\tAmLegend: {\\r\\n\\t\\tcolor: \\\"#000000\\\"\\r\\n\\t},\\r\\n\\r\\n\\tAmGraph: {\\r\\n\\t\\tlineAlpha: 0.9\\r\\n\\t},\\r\\n\\tGaugeArrow: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\talpha: 0.8,\\r\\n\\t\\tnailAlpha: 0,\\r\\n\\t\\tinnerRadius: \\\"40%\\\",\\r\\n\\t\\tnailRadius: 15,\\r\\n\\t\\tstartWidth: 15,\\r\\n\\t\\tborderAlpha: 0.8,\\r\\n\\t\\tnailBorderAlpha: 0\\r\\n\\t},\\r\\n\\r\\n\\tGaugeAxis: {\\r\\n\\t\\ttickColor: \\\"#000000\\\",\\r\\n\\t\\ttickAlpha: 1,\\r\\n\\t\\ttickLength: 15,\\r\\n\\t\\tminorTickLength: 8,\\r\\n\\t\\taxisThickness: 3,\\r\\n\\t\\taxisColor: '#000000',\\r\\n\\t\\taxisAlpha: 1,\\r\\n\\t\\tbandAlpha: 0.8\\r\\n\\t},\\r\\n\\r\\n\\tTrendLine: {\\r\\n\\t\\tlineColor: \\\"#c03246\\\",\\r\\n\\t\\tlineAlpha: 0.8\\r\\n\\t},\\r\\n\\r\\n\\t// ammap\\r\\n\\tAreasSettings: {\\r\\n\\t\\talpha: 0.8,\\r\\n\\t\\tcolor: \\\"#67b7dc\\\",\\r\\n\\t\\tcolorSolid: \\\"#003767\\\",\\r\\n\\t\\tunlistedAreasAlpha: 0.4,\\r\\n\\t\\tunlistedAreasColor: \\\"#000000\\\",\\r\\n\\t\\toutlineColor: \\\"#FFFFFF\\\",\\r\\n\\t\\toutlineAlpha: 0.5,\\r\\n\\t\\toutlineThickness: 0.5,\\r\\n\\t\\trollOverColor: \\\"#3c5bdc\\\",\\r\\n\\t\\trollOverOutlineColor: \\\"#FFFFFF\\\",\\r\\n\\t\\tselectedOutlineColor: \\\"#FFFFFF\\\",\\r\\n\\t\\tselectedColor: \\\"#f15135\\\",\\r\\n\\t\\tunlistedAreasOutlineColor: \\\"#FFFFFF\\\",\\r\\n\\t\\tunlistedAreasOutlineAlpha: 0.5\\r\\n\\t},\\r\\n\\r\\n\\tLinesSettings: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\talpha: 0.8\\r\\n\\t},\\r\\n\\r\\n\\tImagesSettings: {\\r\\n\\t\\talpha: 0.8,\\r\\n\\t\\tlabelColor: \\\"#000000\\\",\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tlabelRollOverColor: \\\"#3c5bdc\\\"\\r\\n\\t},\\r\\n\\r\\n\\tZoomControl: {\\r\\n\\t\\tbuttonFillAlpha:0.7,\\r\\n\\t\\tbuttonIconColor:\\\"#a7a7a7\\\"\\r\\n\\t},\\r\\n\\r\\n\\tSmallMap: {\\r\\n\\t\\tmapColor: \\\"#000000\\\",\\r\\n\\t\\trectangleColor: \\\"#f15135\\\",\\r\\n\\t\\tbackgroundColor: \\\"#FFFFFF\\\",\\r\\n\\t\\tbackgroundAlpha: 0.7,\\r\\n\\t\\tborderThickness: 1,\\r\\n\\t\\tborderAlpha: 0.8\\r\\n\\t},\\r\\n\\r\\n\\t// the defaults below are set using CSS syntax, you can use any existing css property\\r\\n\\t// if you don't use Stock chart, you can delete lines below\\r\\n\\tPeriodSelector: {\\r\\n\\t\\tcolor: \\\"#000000\\\"\\r\\n\\t},\\r\\n\\r\\n\\tPeriodButton: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tbackground: \\\"transparent\\\",\\r\\n\\t\\topacity: 0.7,\\r\\n\\t\\tborder: \\\"1px solid rgba(0, 0, 0, .3)\\\",\\r\\n\\t\\tMozBorderRadius: \\\"5px\\\",\\r\\n\\t\\tborderRadius: \\\"5px\\\",\\r\\n\\t\\tmargin: \\\"1px\\\",\\r\\n\\t\\toutline: \\\"none\\\",\\r\\n\\t\\tboxSizing: \\\"border-box\\\"\\r\\n\\t},\\r\\n\\r\\n\\tPeriodButtonSelected: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tbackgroundColor: \\\"#b9cdf5\\\",\\r\\n\\t\\tborder: \\\"1px solid rgba(0, 0, 0, .3)\\\",\\r\\n\\t\\tMozBorderRadius: \\\"5px\\\",\\r\\n\\t\\tborderRadius: \\\"5px\\\",\\r\\n\\t\\tmargin: \\\"1px\\\",\\r\\n\\t\\toutline: \\\"none\\\",\\r\\n\\t\\topacity: 1,\\r\\n\\t\\tboxSizing: \\\"border-box\\\"\\r\\n\\t},\\r\\n\\r\\n\\tPeriodInputField: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tbackground: \\\"transparent\\\",\\r\\n\\t\\tborder: \\\"1px solid rgba(0, 0, 0, .3)\\\",\\r\\n\\t\\toutline: \\\"none\\\"\\r\\n\\t},\\r\\n\\r\\n\\tDataSetSelector: {\\r\\n\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tselectedBackgroundColor: \\\"#b9cdf5\\\",\\r\\n\\t\\trollOverBackgroundColor: \\\"#a8b0e4\\\"\\r\\n\\t},\\r\\n\\r\\n\\tDataSetCompareList: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tlineHeight: \\\"100%\\\",\\r\\n\\t\\tboxSizing: \\\"initial\\\",\\r\\n\\t\\twebkitBoxSizing: \\\"initial\\\",\\r\\n\\t\\tborder: \\\"1px solid rgba(0, 0, 0, .3)\\\"\\r\\n\\t},\\r\\n\\r\\n\\tDataSetSelect: {\\r\\n\\t\\tborder: \\\"1px solid rgba(0, 0, 0, .3)\\\",\\r\\n\\t\\toutline: \\\"none\\\"\\r\\n\\t}\\r\\n\\r\\n};\"\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(19)(__webpack_require__(30))\n\n/***/ },\n/* 30 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"/*\\r\\nPlugin Name: amCharts Export\\r\\nDescription: Adds export capabilities to amCharts products\\r\\nAuthor: Benjamin Maertz, amCharts\\r\\nVersion: 1.4.10\\r\\nAuthor URI: http://www.amcharts.com/\\r\\n\\r\\nCopyright 2015 amCharts\\r\\n\\r\\nLicensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\nyou may not use this file except in compliance with the License.\\r\\nYou may obtain a copy of the License at\\r\\n\\r\\n\\thttp://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\nUnless required by applicable law or agreed to in writing, software\\r\\ndistributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\nSee the License for the specific language governing permissions and\\r\\nlimitations under the License.\\r\\n\\r\\nPlease note that the above license covers only this plugin. It by all means does\\r\\nnot apply to any other amCharts products that are covered by different licenses.\\r\\n*/\\r\\n\\r\\n/*\\r\\n ** Polyfill translation\\r\\n */\\r\\nif ( !AmCharts.translations[ \\\"export\\\" ] ) {\\r\\n\\tAmCharts.translations[ \\\"export\\\" ] = {}\\r\\n}\\r\\nif ( !AmCharts.translations[ \\\"export\\\" ][ \\\"en\\\" ] ) {\\r\\n\\tAmCharts.translations[ \\\"export\\\" ][ \\\"en\\\" ] = {\\r\\n\\t\\t\\\"fallback.save.text\\\": \\\"CTRL + C to copy the data into the clipboard.\\\",\\r\\n\\t\\t\\\"fallback.save.image\\\": \\\"Rightclick -> Save picture as... to save the image.\\\",\\r\\n\\r\\n\\t\\t\\\"capturing.delayed.menu.label\\\": \\\"{{duration}}\\\",\\r\\n\\t\\t\\\"capturing.delayed.menu.title\\\": \\\"Click to cancel\\\",\\r\\n\\r\\n\\t\\t\\\"menu.label.print\\\": \\\"Print\\\",\\r\\n\\t\\t\\\"menu.label.undo\\\": \\\"Undo\\\",\\r\\n\\t\\t\\\"menu.label.redo\\\": \\\"Redo\\\",\\r\\n\\t\\t\\\"menu.label.cancel\\\": \\\"Cancel\\\",\\r\\n\\r\\n\\t\\t\\\"menu.label.save.image\\\": \\\"Download as ...\\\",\\r\\n\\t\\t\\\"menu.label.save.data\\\": \\\"Save as ...\\\",\\r\\n\\r\\n\\t\\t\\\"menu.label.draw\\\": \\\"Annotate ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.change\\\": \\\"Change ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.add\\\": \\\"Add ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.shapes\\\": \\\"Shape ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.colors\\\": \\\"Color ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.widths\\\": \\\"Size ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.opacities\\\": \\\"Opacity ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.text\\\": \\\"Text\\\",\\r\\n\\r\\n\\t\\t\\\"menu.label.draw.modes\\\": \\\"Mode ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.modes.pencil\\\": \\\"Pencil\\\",\\r\\n\\t\\t\\\"menu.label.draw.modes.line\\\": \\\"Line\\\",\\r\\n\\t\\t\\\"menu.label.draw.modes.arrow\\\": \\\"Arrow\\\"\\r\\n\\t}\\r\\n}\\r\\n\\r\\n/*\\r\\n ** Polyfill export class\\r\\n */\\r\\n( function() {\\r\\n\\tAmCharts[ \\\"export\\\" ] = function( chart, config ) {\\r\\n\\t\\tvar _this = {\\r\\n\\t\\t\\tname: \\\"export\\\",\\r\\n\\t\\t\\tversion: \\\"1.4.10\\\",\\r\\n\\t\\t\\tlibs: {\\r\\n\\t\\t\\t\\tasync: true,\\r\\n\\t\\t\\t\\tautoLoad: true,\\r\\n\\t\\t\\t\\treload: false,\\r\\n\\t\\t\\t\\tresources: [ {\\r\\n\\t\\t\\t\\t\\t\\\"pdfmake/pdfmake.js\\\": [ \\\"pdfmake/vfs_fonts.js\\\" ],\\r\\n\\t\\t\\t\\t\\t\\\"jszip/jszip.js\\\": [ \\\"xlsx/xlsx.js\\\" ]\\r\\n\\t\\t\\t\\t}, \\\"fabric.js/fabric.js\\\", \\\"FileSaver.js/FileSaver.js\\\" ],\\r\\n\\t\\t\\t\\tnamespaces: {\\r\\n\\t\\t\\t\\t\\t\\\"pdfmake.js\\\": \\\"pdfMake\\\",\\r\\n\\t\\t\\t\\t\\t\\\"jszip.js\\\": \\\"JSZip\\\",\\r\\n\\t\\t\\t\\t\\t\\\"xlsx.js\\\": \\\"XLSX\\\",\\r\\n\\t\\t\\t\\t\\t\\\"fabric.js\\\": \\\"fabric\\\",\\r\\n\\t\\t\\t\\t\\t\\\"FileSaver.js\\\": \\\"saveAs\\\"\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tconfig: {},\\r\\n\\t\\t\\tsetup: {\\r\\n\\t\\t\\t\\tchart: chart,\\r\\n\\t\\t\\t\\thasBlob: false,\\r\\n\\t\\t\\t\\twrapper: false\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tdrawing: {\\r\\n\\t\\t\\t\\tenabled: false,\\r\\n\\t\\t\\t\\tundos: [],\\r\\n\\t\\t\\t\\tredos: [],\\r\\n\\t\\t\\t\\tbuffer: {\\r\\n\\t\\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\tx1: 0,\\r\\n\\t\\t\\t\\t\\t\\ty1: 0,\\r\\n\\t\\t\\t\\t\\t\\tx2: 0,\\r\\n\\t\\t\\t\\t\\t\\ty2: 0,\\r\\n\\t\\t\\t\\t\\t\\txD: 0,\\r\\n\\t\\t\\t\\t\\t\\tyD: 0\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\thandler: {\\r\\n\\t\\t\\t\\t\\tundo: function( options, skipped ) {\\r\\n\\t\\t\\t\\t\\t\\tvar item = _this.drawing.undos.pop();\\r\\n\\t\\t\\t\\t\\t\\tif ( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\titem.selectable = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.redos.push( item );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.action == \\\"added\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.remove( item.target );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tvar state = JSON.parse( item.state );\\r\\n\\t\\t\\t\\t\\t\\t\\titem.target.set( state );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.target instanceof fabric.Group ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.change( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcolor: state.cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\twidth: state.cfg.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: state.cfg.opacity\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, true, item.target );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// RECALL\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.state == item.target.recentState && !skipped ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.undo( item, true );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tredo: function( options, skipped ) {\\r\\n\\t\\t\\t\\t\\t\\tvar item = _this.drawing.redos.pop();\\r\\n\\t\\t\\t\\t\\t\\tif ( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\titem.selectable = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.undos.push( item );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.action == \\\"added\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( item.target );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tvar state = JSON.parse( item.state );\\r\\n\\t\\t\\t\\t\\t\\t\\titem.target.recentState = item.state;\\r\\n\\t\\t\\t\\t\\t\\t\\titem.target.set( state );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.target instanceof fabric.Group ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.change( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcolor: state.cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\twidth: state.cfg.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: state.cfg.opacity\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, true, item.target );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// RECALL\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.action == \\\"addified\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.redo();\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tdone: function( options ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.buffer.enabled = false;\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.undos = [];\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.redos = [];\\r\\n\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.deactivateAll();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.setup.wrapper ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.removeChild( _this.setup.wrapper );\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.wrapper = false;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tadd: function( options ) {\\r\\n\\t\\t\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t\\t\\ttop: _this.setup.fabric.height / 2,\\r\\n\\t\\t\\t\\t\\t\\t\\tleft: _this.setup.fabric.width / 2\\r\\n\\t\\t\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\t\\t\\tvar method = cfg.url.indexOf( \\\".svg\\\" ) != -1 ? fabric.loadSVGFromURL : fabric.Image.fromURL;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tmethod( cfg.url, function( objects, options ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar group = options !== undefined ? fabric.util.groupSVGElements( objects, options ) : objects;\\r\\n\\t\\t\\t\\t\\t\\t\\tvar ratio = false;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// RESCALE ONLY IF IT EXCEEDS THE CANVAS\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.height > _this.setup.fabric.height || group.width > _this.setup.fabric.width ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tratio = ( _this.setup.fabric.height / 2 ) / group.height;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.top > _this.setup.fabric.height ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.top = _this.setup.fabric.height / 2;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.left > _this.setup.fabric.width ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.left = _this.setup.fabric.width / 2;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toriginX: \\\"center\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toriginY: \\\"center\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttop: cfg.top,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tleft: cfg.left,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\twidth: ratio ? group.width * ratio : group.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\theight: ratio ? group.height * ratio : group.height,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfill: _this.drawing.color\\r\\n\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( group );\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tchange: function( options, skipped, target ) {\\r\\n\\t\\t\\t\\t\\t\\tvar cfg = _this.deepMerge( {}, options || {} );\\r\\n\\t\\t\\t\\t\\t\\tvar state, i1, rgba;\\r\\n\\t\\t\\t\\t\\t\\tvar current = target || _this.drawing.buffer.target;\\r\\n\\t\\t\\t\\t\\t\\tvar objects = current ? current._objects ? current._objects : [ current ] : null;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// UPDATE DRAWING OBJECT\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.mode ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.mode = cfg.mode;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.width ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.width = cfg.width;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.fontSize = cfg.width * 3;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.fontSize ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.fontSize = cfg.fontSize;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.color ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.color = cfg.color;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.opacity ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.opacity = cfg.opacity;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// APPLY OPACITY ON CURRENT COLOR\\r\\n\\t\\t\\t\\t\\t\\trgba = new fabric.Color( _this.drawing.color ).getSource();\\r\\n\\t\\t\\t\\t\\t\\trgba.pop();\\r\\n\\t\\t\\t\\t\\t\\trgba.push( _this.drawing.opacity );\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.color = \\\"rgba(\\\" + rgba.join() + \\\")\\\";\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.freeDrawingBrush.color = _this.drawing.color;\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.freeDrawingBrush.width = _this.drawing.width;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// UPDATE CURRENT SELECTION\\r\\n\\t\\t\\t\\t\\t\\tif ( current ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tstate = JSON.parse( current.recentState ).cfg;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// UPDATE GIVE OPTIONS ONLY\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( state ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.color = cfg.color || state.color;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.width = cfg.width || state.width;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.opacity = cfg.opacity || state.opacity;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.fontSize = cfg.fontSize || cfg.width * 3;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\trgba = new fabric.Color( cfg.color ).getSource();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\trgba.pop();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\trgba.push( cfg.opacity );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.color = \\\"rgba(\\\" + rgba.join() + \\\")\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// UPDATE OBJECTS\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < objects.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif (\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ] instanceof fabric.Text ||\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ] instanceof fabric.PathGroup ||\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ] instanceof fabric.Triangle\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.color || cfg.opacity ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfill: cfg.color\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.fontSize ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfontSize: cfg.fontSize\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if (\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ] instanceof fabric.Path ||\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ] instanceof fabric.Line\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( current instanceof fabric.Group ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.color || cfg.opacity ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstroke: cfg.color\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.color || cfg.opacity ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstroke: cfg.color\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.width ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstrokeWidth: cfg.width\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ADD UNDO\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( !skipped ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstate = JSON.stringify( _this.deepMerge( current.saveState().originalState, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcfg: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcolor: cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\twidth: cfg.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: cfg.opacity\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcurrent.recentState = state;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.redos = [];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.undos.push( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"modified\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttarget: current,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tstate: state\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\ttext: function( options ) {\\r\\n\\t\\t\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t\\t\\ttext: _this.i18l( \\\"menu.label.draw.text\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\ttop: _this.setup.fabric.height / 2,\\r\\n\\t\\t\\t\\t\\t\\t\\tleft: _this.setup.fabric.width / 2,\\r\\n\\t\\t\\t\\t\\t\\t\\tfontSize: _this.drawing.fontSize,\\r\\n\\t\\t\\t\\t\\t\\t\\tfontFamily: _this.setup.chart.fontFamily || \\\"Verdana\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\tfill: _this.drawing.color\\r\\n\\t\\t\\t\\t\\t\\t}, options || {} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tcfg.click = function() {};\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tvar text = new fabric.IText( cfg.text, cfg );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( text );\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.setActiveObject( text );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\ttext.selectAll();\\r\\n\\t\\t\\t\\t\\t\\ttext.enterEditing();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\treturn text;\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tline: function( options ) {\\r\\n\\t\\t\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t\\t\\tx1: ( _this.setup.fabric.width / 2 ) - ( _this.setup.fabric.width / 10 ),\\r\\n\\t\\t\\t\\t\\t\\t\\tx2: ( _this.setup.fabric.width / 2 ) + ( _this.setup.fabric.width / 10 ),\\r\\n\\t\\t\\t\\t\\t\\t\\ty1: ( _this.setup.fabric.height / 2 ),\\r\\n\\t\\t\\t\\t\\t\\t\\ty2: ( _this.setup.fabric.height / 2 ),\\r\\n\\t\\t\\t\\t\\t\\t\\tangle: 90,\\r\\n\\t\\t\\t\\t\\t\\t\\tstrokeLineCap: _this.drawing.lineCap,\\r\\n\\t\\t\\t\\t\\t\\t\\tarrow: _this.drawing.arrow,\\r\\n\\t\\t\\t\\t\\t\\t\\tcolor: _this.drawing.color,\\r\\n\\t\\t\\t\\t\\t\\t\\twidth: _this.drawing.width,\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup: [],\\r\\n\\t\\t\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\t\\t\\tvar i1, arrow, arrowTop, arrowLeft;\\r\\n\\t\\t\\t\\t\\t\\tvar line = new fabric.Line( [ cfg.x1, cfg.y1, cfg.x2, cfg.y2 ], {\\r\\n\\t\\t\\t\\t\\t\\t\\tstroke: cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\tstrokeWidth: cfg.width,\\r\\n\\t\\t\\t\\t\\t\\t\\tstrokeLineCap: cfg.strokeLineCap\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tcfg.group.push( line );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.arrow ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg.angle = cfg.angle ? cfg.angle : _this.getAngle( cfg.x1, cfg.y1, cfg.x2, cfg.y2 );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.arrow == \\\"start\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowTop = cfg.y1 + ( cfg.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowLeft = cfg.x1 + ( cfg.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t} else if ( cfg.arrow == \\\"middle\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowTop = cfg.y2 + ( cfg.width / 2 ) - ( ( cfg.y2 - cfg.y1 ) / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowLeft = cfg.x2 + ( cfg.width / 2 ) - ( ( cfg.x2 - cfg.x1 ) / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t} else { // arrow: end\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowTop = cfg.y2 + ( cfg.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowLeft = cfg.x2 + ( cfg.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tarrow = new fabric.Triangle( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttop: arrowTop,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tleft: arrowLeft,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfill: cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\theight: cfg.width * 7,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\twidth: cfg.width * 7,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tangle: cfg.angle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toriginX: \\\"center\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toriginY: \\\"bottom\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg.group.push( arrow );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.action != \\\"config\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.arrow ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar group = new fabric.Group( cfg.group );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcfg: cfg,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfill: cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: cfg.action,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tselectable: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tknown: cfg.action == \\\"change\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.action == \\\"change\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.setActiveObject( group );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( group );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\treturn group;\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( line );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\treturn line;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < cfg.group.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.group[ i1 ].noUndo = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( cfg.group[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\treturn cfg;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tdefaults: {\\r\\n\\t\\t\\t\\tposition: \\\"top-right\\\",\\r\\n\\t\\t\\t\\tfileName: \\\"amCharts\\\",\\r\\n\\t\\t\\t\\taction: \\\"download\\\",\\r\\n\\t\\t\\t\\toverflow: true,\\r\\n\\t\\t\\t\\tpath: ( ( chart.path || \\\"\\\" ) + \\\"plugins/export/\\\" ),\\r\\n\\t\\t\\t\\tformats: {\\r\\n\\t\\t\\t\\t\\tJPG: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"image/jpg\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"jpg\\\",\\r\\n\\t\\t\\t\\t\\t\\tcapture: true\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tPNG: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"image/png\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"png\\\",\\r\\n\\t\\t\\t\\t\\t\\tcapture: true\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tSVG: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"text/xml\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"svg\\\",\\r\\n\\t\\t\\t\\t\\t\\tcapture: true\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tPDF: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"application/pdf\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"pdf\\\",\\r\\n\\t\\t\\t\\t\\t\\tcapture: true\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tCSV: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"text/plain\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"csv\\\"\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tJSON: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"text/plain\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"json\\\"\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tXLSX: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"application/octet-stream\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"xlsx\\\"\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tfabric: {\\r\\n\\t\\t\\t\\t\\tbackgroundColor: \\\"#FFFFFF\\\",\\r\\n\\t\\t\\t\\t\\tremoveImages: true,\\r\\n\\t\\t\\t\\t\\tselection: false,\\r\\n\\t\\t\\t\\t\\tdrawing: {\\r\\n\\t\\t\\t\\t\\t\\tenabled: true,\\r\\n\\t\\t\\t\\t\\t\\tarrow: \\\"end\\\",\\r\\n\\t\\t\\t\\t\\t\\tlineCap: \\\"butt\\\",\\r\\n\\t\\t\\t\\t\\t\\tmode: \\\"pencil\\\",\\r\\n\\t\\t\\t\\t\\t\\tmodes: [ \\\"pencil\\\", \\\"line\\\", \\\"arrow\\\" ],\\r\\n\\t\\t\\t\\t\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\t\\t\\t\\t\\tcolors: [ \\\"#000000\\\", \\\"#FFFFFF\\\", \\\"#FF0000\\\", \\\"#00FF00\\\", \\\"#0000FF\\\" ],\\r\\n\\t\\t\\t\\t\\t\\tshapes: [ \\\"11.svg\\\", \\\"14.svg\\\", \\\"16.svg\\\", \\\"17.svg\\\", \\\"20.svg\\\", \\\"27.svg\\\" ],\\r\\n\\t\\t\\t\\t\\t\\twidth: 1,\\r\\n\\t\\t\\t\\t\\t\\tfontSize: 11,\\r\\n\\t\\t\\t\\t\\t\\twidths: [ 1, 5, 10, 15 ],\\r\\n\\t\\t\\t\\t\\t\\topacity: 1,\\r\\n\\t\\t\\t\\t\\t\\topacities: [ 1, 0.8, 0.6, 0.4, 0.2 ],\\r\\n\\t\\t\\t\\t\\t\\tmenu: undefined,\\r\\n\\t\\t\\t\\t\\t\\tautoClose: true\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tpdfMake: {\\r\\n\\t\\t\\t\\t\\tpageSize: \\\"A4\\\",\\r\\n\\t\\t\\t\\t\\tpageOrientation: \\\"portrait\\\",\\r\\n\\t\\t\\t\\t\\timages: {},\\r\\n\\t\\t\\t\\t\\tcontent: [ \\\"Saved from:\\\", window.location.href, {\\r\\n\\t\\t\\t\\t\\t\\timage: \\\"reference\\\",\\r\\n\\t\\t\\t\\t\\t\\tfit: [ 523.28, 769.89 ]\\r\\n\\t\\t\\t\\t\\t} ]\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tmenu: undefined,\\r\\n\\t\\t\\t\\tdivId: null,\\r\\n\\t\\t\\t\\tmenuReviver: null,\\r\\n\\t\\t\\t\\tmenuWalker: null,\\r\\n\\t\\t\\t\\tfallback: true,\\r\\n\\t\\t\\t\\tkeyListener: true,\\r\\n\\t\\t\\t\\tfileListener: true\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Returns translated message, takes english as default\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ti18l: function( key, language ) {\\r\\n\\t\\t\\t\\tvar lang = language ? langugage : _this.setup.chart.language ? _this.setup.chart.language : \\\"en\\\";\\r\\n\\t\\t\\t\\tvar catalog = AmCharts.translations[ _this.name ][ lang ] || AmCharts.translations[ _this.name ][ \\\"en\\\" ];\\r\\n\\r\\n\\t\\t\\t\\treturn catalog[ key ] || key;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates download file; if unsupported offers fallback to save manually\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tdownload: function( data, type, filename ) {\\r\\n\\t\\t\\t\\t// SAVE\\r\\n\\t\\t\\t\\tif ( window.saveAs && _this.setup.hasBlob ) {\\r\\n\\t\\t\\t\\t\\tvar blob = _this.toBlob( {\\r\\n\\t\\t\\t\\t\\t\\tdata: data,\\r\\n\\t\\t\\t\\t\\t\\ttype: type\\r\\n\\t\\t\\t\\t\\t}, function( data ) {\\r\\n\\t\\t\\t\\t\\t\\tsaveAs( data, filename );\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t// FALLBACK TEXTAREA\\r\\n\\t\\t\\t\\t} else if ( _this.config.fallback && type == \\\"text/plain\\\" ) {\\r\\n\\t\\t\\t\\t\\tvar div = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t\\tvar msg = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t\\tvar textarea = document.createElement( \\\"textarea\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\tmsg.innerHTML = _this.i18l( \\\"fallback.save.text\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\tdiv.appendChild( msg );\\r\\n\\t\\t\\t\\t\\tdiv.appendChild( textarea );\\r\\n\\t\\t\\t\\t\\tmsg.setAttribute( \\\"class\\\", \\\"amcharts-export-fallback-message\\\" );\\r\\n\\t\\t\\t\\t\\tdiv.setAttribute( \\\"class\\\", \\\"amcharts-export-fallback\\\" );\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.appendChild( div );\\r\\n\\r\\n\\t\\t\\t\\t\\t// FULFILL TEXTAREA AND PRESELECT\\r\\n\\t\\t\\t\\t\\ttextarea.setAttribute( \\\"readonly\\\", \\\"\\\" );\\r\\n\\t\\t\\t\\t\\ttextarea.value = data;\\r\\n\\t\\t\\t\\t\\ttextarea.focus();\\r\\n\\t\\t\\t\\t\\ttextarea.select();\\r\\n\\r\\n\\t\\t\\t\\t\\t// UPDATE MENU\\r\\n\\t\\t\\t\\t\\t_this.createMenu( [ {\\r\\n\\t\\t\\t\\t\\t\\t\\\"class\\\": \\\"export-main export-close\\\",\\r\\n\\t\\t\\t\\t\\t\\tlabel: \\\"Done\\\",\\r\\n\\t\\t\\t\\t\\t\\tclick: function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.removeChild( div );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} ] );\\r\\n\\r\\n\\t\\t\\t\\t\\t// FALLBACK IMAGE\\r\\n\\t\\t\\t\\t} else if ( _this.config.fallback && type.split( \\\"/\\\" )[ 0 ] == \\\"image\\\" ) {\\r\\n\\t\\t\\t\\t\\tvar div = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t\\tvar msg = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t\\tvar img = _this.toImage( {\\r\\n\\t\\t\\t\\t\\t\\tdata: data\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\tmsg.innerHTML = _this.i18l( \\\"fallback.save.image\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t// FULFILL TEXTAREA AND PRESELECT\\r\\n\\t\\t\\t\\t\\tdiv.appendChild( msg );\\r\\n\\t\\t\\t\\t\\tdiv.appendChild( img );\\r\\n\\t\\t\\t\\t\\tmsg.setAttribute( \\\"class\\\", \\\"amcharts-export-fallback-message\\\" );\\r\\n\\t\\t\\t\\t\\tdiv.setAttribute( \\\"class\\\", \\\"amcharts-export-fallback\\\" );\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.appendChild( div );\\r\\n\\r\\n\\t\\t\\t\\t\\t// UPDATE MENU\\r\\n\\t\\t\\t\\t\\t_this.createMenu( [ {\\r\\n\\t\\t\\t\\t\\t\\t\\\"class\\\": \\\"export-main export-close\\\",\\r\\n\\t\\t\\t\\t\\t\\tlabel: \\\"Done\\\",\\r\\n\\t\\t\\t\\t\\t\\tclick: function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.removeChild( div );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} ] );\\r\\n\\r\\n\\t\\t\\t\\t\\t// ERROR\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\tthrow new Error( \\\"Unable to create file. Ensure saveAs (FileSaver.js) is supported.\\\" );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates script, links tags and places them into the document's head\\r\\n\\t\\t\\t * In case of reload it replaces the node to force the download\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tloadResource: function( src, addons ) {\\r\\n\\t\\t\\t\\tvar i1, exist, node, item, check, type;\\r\\n\\t\\t\\t\\tvar url = src.indexOf( \\\"//\\\" ) != -1 ? src : [ _this.libs.path, src ].join( \\\"\\\" );\\r\\n\\r\\n\\t\\t\\t\\tfunction callback() {\\r\\n\\t\\t\\t\\t\\tif ( addons ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < addons.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.loadResource( addons[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tif ( src.indexOf( \\\".js\\\" ) != -1 ) {\\r\\n\\t\\t\\t\\t\\tnode = document.createElement( \\\"script\\\" );\\r\\n\\t\\t\\t\\t\\tnode.setAttribute( \\\"type\\\", \\\"text/javascript\\\" );\\r\\n\\t\\t\\t\\t\\tnode.setAttribute( \\\"src\\\", url );\\r\\n\\t\\t\\t\\t\\tif ( _this.libs.async ) {\\r\\n\\t\\t\\t\\t\\t\\tnode.setAttribute( \\\"async\\\", \\\"\\\" );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t} else if ( src.indexOf( \\\".css\\\" ) != -1 ) {\\r\\n\\t\\t\\t\\t\\tnode = document.createElement( \\\"link\\\" );\\r\\n\\t\\t\\t\\t\\tnode.setAttribute( \\\"type\\\", \\\"text/css\\\" );\\r\\n\\t\\t\\t\\t\\tnode.setAttribute( \\\"rel\\\", \\\"stylesheet\\\" );\\r\\n\\t\\t\\t\\t\\tnode.setAttribute( \\\"href\\\", url );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// NODE CHECK\\r\\n\\t\\t\\t\\tfor ( i1 = 0; i1 < document.head.childNodes.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\titem = document.head.childNodes[ i1 ];\\r\\n\\t\\t\\t\\t\\tcheck = item ? ( item.src || item.href ) : false;\\r\\n\\t\\t\\t\\t\\ttype = item ? item.tagName : false;\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( item && check && check.indexOf( src ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.libs.reload ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tdocument.head.removeChild( item );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\texist = true;\\r\\n\\t\\t\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// NAMESPACE CHECK\\r\\n\\t\\t\\t\\tfor ( i1 in _this.libs.namespaces ) {\\r\\n\\t\\t\\t\\t\\tvar namespace = _this.libs.namespaces[ i1 ];\\r\\n\\t\\t\\t\\t\\tvar check = src.toLowerCase();\\r\\n\\t\\t\\t\\t\\tvar item = i1.toLowerCase();\\r\\n\\t\\t\\t\\t\\tif ( check.indexOf( item ) != -1 && window[ namespace ] !== undefined ) {\\r\\n\\t\\t\\t\\t\\t\\texist = true;\\r\\n\\t\\t\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tif ( !exist || _this.libs.reload ) {\\r\\n\\t\\t\\t\\t\\tnode.addEventListener( \\\"load\\\", callback );\\r\\n\\t\\t\\t\\t\\tdocument.head.appendChild( node );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Walker to generate the script,link tags\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tloadDependencies: function() {\\r\\n\\t\\t\\t\\tvar i1, i2;\\r\\n\\t\\t\\t\\tif ( _this.libs.autoLoad ) {\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.libs.resources.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.libs.resources[ i1 ] instanceof Object ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 in _this.libs.resources[ i1 ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.loadResource( i2, _this.libs.resources[ i1 ][ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.loadResource( _this.libs.resources[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Converts string to number\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tpxToNumber: function( attr, returnUndefined ) {\\r\\n\\t\\t\\t\\tif ( !attr && returnUndefined ) {\\r\\n\\t\\t\\t\\t\\treturn undefined;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn Number( String( attr ).replace( \\\"px\\\", \\\"\\\" ) ) || 0;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Converts number to string\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tnumberToPx: function( attr ) {\\r\\n\\t\\t\\t\\treturn String( attr ) + \\\"px\\\";\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Recursive method to merge the given objects together\\r\\n\\t\\t\\t * Overwrite flag replaces the value instead to crawl through\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tdeepMerge: function( a, b, overwrite ) {\\r\\n\\t\\t\\t\\tvar i1, v, type = b instanceof Array ? \\\"array\\\" : \\\"object\\\";\\r\\n\\r\\n\\t\\t\\t\\tfor ( i1 in b ) {\\r\\n\\t\\t\\t\\t\\t// PREVENT METHODS\\r\\n\\t\\t\\t\\t\\tif ( type == \\\"array\\\" && isNaN( i1 ) ) {\\r\\n\\t\\t\\t\\t\\t\\tcontinue;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tv = b[ i1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t// NEW\\r\\n\\t\\t\\t\\t\\tif ( a[ i1 ] == undefined || overwrite ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( v instanceof Array ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = new Array();\\r\\n\\t\\t\\t\\t\\t\\t} else if ( v instanceof Function ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = function() {};\\r\\n\\t\\t\\t\\t\\t\\t} else if ( v instanceof Date ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = new Date();\\r\\n\\t\\t\\t\\t\\t\\t} else if ( v instanceof Object ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = new Object();\\r\\n\\t\\t\\t\\t\\t\\t} else if ( v instanceof Number ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = new Number();\\r\\n\\t\\t\\t\\t\\t\\t} else if ( v instanceof String ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = new String();\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tif (\\r\\n\\t\\t\\t\\t\\t\\t( a instanceof Object || a instanceof Array ) &&\\r\\n\\t\\t\\t\\t\\t\\t( v instanceof Object || v instanceof Array ) &&\\r\\n\\t\\t\\t\\t\\t\\t!( v instanceof Function || v instanceof Date || _this.isElement( v ) ) &&\\r\\n\\t\\t\\t\\t\\t\\ti1 != \\\"chart\\\"\\r\\n\\t\\t\\t\\t\\t) {\\r\\n\\t\\t\\t\\t\\t\\t_this.deepMerge( a[ i1 ], v, overwrite );\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tif ( a instanceof Array && !overwrite ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta.push( v );\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = v;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn a;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Checks if given argument is a valid node\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tisElement: function( thingy ) {\\r\\n\\t\\t\\t\\treturn thingy instanceof Object && thingy && thingy.nodeType === 1;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Checks if given argument contains a hashbang and returns it\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tisHashbanged: function( thingy ) {\\r\\n\\t\\t\\t\\tvar str = String( thingy ).replace( /\\\\\\\"/g, \\\"\\\" );\\r\\n\\r\\n\\t\\t\\t\\treturn str.slice( 0, 3 ) == \\\"url\\\" ? str.slice( str.indexOf( \\\"#\\\" ) + 1, str.length - 1 ) : false;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Checks if given event has been thrown with pressed click / touch\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tisPressed: function( event ) {\\r\\n\\t\\t\\t\\t// IE EXCEPTION\\r\\n\\t\\t\\t\\tif ( event.type == \\\"mousemove\\\" && event.which === 1 ) {\\r\\n\\t\\t\\t\\t\\t// IGNORE\\r\\n\\r\\n\\t\\t\\t\\t\\t// OTHERS\\r\\n\\t\\t\\t\\t} else if (\\r\\n\\t\\t\\t\\t\\tevent.type == \\\"touchmove\\\" ||\\r\\n\\t\\t\\t\\t\\tevent.buttons === 1 ||\\r\\n\\t\\t\\t\\t\\tevent.button === 1 ||\\r\\n\\t\\t\\t\\t\\tevent.which === 1\\r\\n\\t\\t\\t\\t) {\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.isPressed = true;\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.isPressed = false;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn _this.drawing.buffer.isPressed;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Checks if given source is within the current origin\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tisTainted: function( source ) {\\r\\n\\t\\t\\t\\tvar origin = String( window.location.origin || window.location.protocol + \\\"//\\\" + window.location.hostname + ( window.location.port ? ':' + window.location.port : '' ) );\\r\\n\\r\\n\\t\\t\\t\\t// CHECK IF TAINTED\\r\\n\\t\\t\\t\\tif (\\r\\n\\t\\t\\t\\t\\tsource &&\\r\\n\\t\\t\\t\\t\\tsource.indexOf( \\\"//\\\" ) != -1 &&\\r\\n\\t\\t\\t\\t\\tsource.indexOf( origin.replace( /.*:/, \\\"\\\" ) ) == -1\\r\\n\\t\\t\\t\\t) {\\r\\n\\t\\t\\t\\t\\treturn true;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/*\\r\\n\\t\\t\\t ** Checks several indicators for acceptance;\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tisSupported: function() {\\r\\n\\t\\t\\t\\t// CHECK CONFIG\\r\\n\\t\\t\\t\\tif ( !_this.config.enabled ) {\\r\\n\\t\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// CHECK IE; ATTEMPT TO ACCESS HEAD ELEMENT\\r\\n\\t\\t\\t\\tif ( AmCharts.isIE && AmCharts.IEversion <= 9 ) {\\r\\n\\t\\t\\t\\t\\tif ( !Array.prototype.indexOf || !document.head || _this.config.fallback === false ) {\\r\\n\\t\\t\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn true;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\r\\n\\t\\t\\tgetAngle: function( x1, y1, x2, y2 ) {\\r\\n\\t\\t\\t\\tvar x = x2 - x1;\\r\\n\\t\\t\\t\\tvar y = y2 - y1;\\r\\n\\t\\t\\t\\tvar angle;\\r\\n\\t\\t\\t\\tif ( x == 0 ) {\\r\\n\\t\\t\\t\\t\\tif ( y == 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tangle = 0;\\r\\n\\t\\t\\t\\t\\t} else if ( y > 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.PI / 2;\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.PI * 3 / 2;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t} else if ( y == 0 ) {\\r\\n\\t\\t\\t\\t\\tif ( x > 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tangle = 0;\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.PI;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\tif ( x < 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.atan( y / x ) + Math.PI;\\r\\n\\t\\t\\t\\t\\t} else if ( y < 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.atan( y / x ) + ( 2 * Math.PI );\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.atan( y / x );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn angle * 180 / Math.PI;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Recursive method which crawls upwards to gather the requested attribute\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tgatherAttribute: function( elm, attr, limit, lvl ) {\\r\\n\\t\\t\\t\\tvar value, lvl = lvl ? lvl : 0,\\r\\n\\t\\t\\t\\t\\tlimit = limit ? limit : 3;\\r\\n\\t\\t\\t\\tif ( elm ) {\\r\\n\\t\\t\\t\\t\\tvalue = elm.getAttribute( attr );\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( !value && lvl < limit ) {\\r\\n\\t\\t\\t\\t\\t\\treturn _this.gatherAttribute( elm.parentNode, attr, limit, lvl + 1 );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn value;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Recursive method which crawls upwards to gather the requested classname\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tgatherClassName: function( elm, className, limit, lvl ) {\\r\\n\\t\\t\\t\\tvar value, lvl = lvl ? lvl : 0,\\r\\n\\t\\t\\t\\t\\tlimit = limit ? limit : 3;\\r\\n\\r\\n\\t\\t\\t\\tif ( _this.isElement( elm ) ) {\\r\\n\\t\\t\\t\\t\\tvalue = ( elm.getAttribute( \\\"class\\\" ) || \\\"\\\" ).split( \\\" \\\" ).indexOf( className ) != -1;\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( !value && lvl < limit ) {\\r\\n\\t\\t\\t\\t\\t\\treturn _this.gatherClassName( elm.parentNode, className, limit, lvl + 1 );\\r\\n\\t\\t\\t\\t\\t} else if ( value ) {\\r\\n\\t\\t\\t\\t\\t\\tvalue = elm;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn value;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Collects the clip-paths and patterns\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tgatherElements: function( group, cfg, images ) {\\r\\n\\t\\t\\t\\tvar i1, i2;\\r\\n\\t\\t\\t\\tfor ( i1 = 0; i1 < group.children.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\tvar childNode = group.children[ i1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t// CLIPPATH\\r\\n\\t\\t\\t\\t\\tif ( childNode.tagName == \\\"clipPath\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tvar bbox = {};\\r\\n\\t\\t\\t\\t\\t\\tvar transform = fabric.parseTransformAttribute( _this.gatherAttribute( childNode, \\\"transform\\\" ) );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// HIDE SIBLINGS; GATHER IT'S DIMENSIONS\\r\\n\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < childNode.childNodes.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tchildNode.childNodes[ i2 ].setAttribute( \\\"fill\\\", \\\"transparent\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\tbbox = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tx: _this.pxToNumber( childNode.childNodes[ i2 ].getAttribute( \\\"x\\\" ) ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ty: _this.pxToNumber( childNode.childNodes[ i2 ].getAttribute( \\\"y\\\" ) ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\twidth: _this.pxToNumber( childNode.childNodes[ i2 ].getAttribute( \\\"width\\\" ) ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\theight: _this.pxToNumber( childNode.childNodes[ i2 ].getAttribute( \\\"height\\\" ) )\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tgroup.clippings[ childNode.id ] = {\\r\\n\\t\\t\\t\\t\\t\\t\\tsvg: childNode,\\r\\n\\t\\t\\t\\t\\t\\t\\tbbox: bbox,\\r\\n\\t\\t\\t\\t\\t\\t\\ttransform: transform\\r\\n\\t\\t\\t\\t\\t\\t};\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// PATTERN\\r\\n\\t\\t\\t\\t\\t} else if ( childNode.tagName == \\\"pattern\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tvar props = {\\r\\n\\t\\t\\t\\t\\t\\t\\tnode: childNode,\\r\\n\\t\\t\\t\\t\\t\\t\\tsource: childNode.getAttribute( \\\"xlink:href\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\twidth: Number( childNode.getAttribute( \\\"width\\\" ) ),\\r\\n\\t\\t\\t\\t\\t\\t\\theight: Number( childNode.getAttribute( \\\"height\\\" ) ),\\r\\n\\t\\t\\t\\t\\t\\t\\trepeat: \\\"repeat\\\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// GATHER BACKGROUND COLOR\\r\\n\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < childNode.childNodes.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( childNode.childNodes[ i2 ].tagName == \\\"rect\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tprops.fill = childNode.childNodes[ i2 ].getAttribute( \\\"fill\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// TAINTED\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.removeImages && _this.isTainted( props.source ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.patterns[ childNode.id ] = props.fill ? props.fill : \\\"transparent\\\";\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\timages.included++;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.patterns[ props.node.id ] = props;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// IMAGES\\r\\n\\t\\t\\t\\t\\t} else if ( childNode.tagName == \\\"image\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\timages.included++;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// LOAD IMAGE MANUALLY; TO RERENDER THE CANVAS\\r\\n\\t\\t\\t\\t\\t\\tfabric.Image.fromURL( childNode.getAttribute( \\\"xlink:href\\\" ), function( img ) {\\r\\n\\t\\t\\t\\t\\t\\t\\timages.loaded++;\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn group;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/*\\r\\n\\t\\t\\t ** GATHER MOUSE POSITION;\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tgatherPosition: function( event, type ) {\\r\\n\\t\\t\\t\\tvar ref = _this.drawing.buffer.position;\\r\\n\\t\\t\\t\\tvar ivt = fabric.util.invertTransform( _this.setup.fabric.viewportTransform );\\r\\n\\t\\t\\t\\tvar pos;\\r\\n\\r\\n\\t\\t\\t\\tif ( event.type == \\\"touchmove\\\" ) {\\r\\n\\t\\t\\t\\t\\tif ( \\\"touches\\\" in event ) {\\r\\n\\t\\t\\t\\t\\t\\tevent = event.touches[ 0 ];\\r\\n\\t\\t\\t\\t\\t} else if ( \\\"changedTouches\\\" in event ) {\\r\\n\\t\\t\\t\\t\\t\\tevent = event.changedTouches[ 0 ];\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tpos = fabric.util.transformPoint( _this.setup.fabric.getPointer( event, true ), ivt );\\r\\n\\r\\n\\t\\t\\t\\tif ( type == 1 ) {\\r\\n\\t\\t\\t\\t\\tref.x1 = pos.x;\\r\\n\\t\\t\\t\\t\\tref.y1 = pos.y;\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tref.x2 = pos.x;\\r\\n\\t\\t\\t\\tref.y2 = pos.y;\\r\\n\\t\\t\\t\\tref.xD = ( ref.x1 - ref.x2 ) < 0 ? ( ref.x1 - ref.x2 ) * -1 : ( ref.x1 - ref.x2 );\\r\\n\\t\\t\\t\\tref.yD = ( ref.y1 - ref.y2 ) < 0 ? ( ref.y1 - ref.y2 ) * -1 : ( ref.y1 - ref.y2 );\\r\\n\\r\\n\\t\\t\\t\\treturn ref;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Method to capture the current state of the chart\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tcapture: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar i1;\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( _this.deepMerge( {}, _this.config.fabric ), options || {} );\\r\\n\\t\\t\\t\\tvar groups = [];\\r\\n\\t\\t\\t\\tvar offset = {\\r\\n\\t\\t\\t\\t\\tx: 0,\\r\\n\\t\\t\\t\\t\\ty: 0,\\r\\n\\t\\t\\t\\t\\tpX: 0,\\r\\n\\t\\t\\t\\t\\tpY: 0,\\r\\n\\t\\t\\t\\t\\twidth: _this.setup.chart.divRealWidth,\\r\\n\\t\\t\\t\\t\\theight: _this.setup.chart.divRealHeight\\r\\n\\t\\t\\t\\t};\\r\\n\\t\\t\\t\\tvar images = {\\r\\n\\t\\t\\t\\t\\tloaded: 0,\\r\\n\\t\\t\\t\\t\\tincluded: 0\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tfabric.ElementsParser.prototype.resolveGradient = function( obj, property ) {\\r\\n\\r\\n\\t\\t\\t\\t\\tvar instanceFillValue = obj.get( property );\\r\\n\\t\\t\\t\\t\\tif ( !( /^url\\\\(/ ).test( instanceFillValue ) ) {\\r\\n\\t\\t\\t\\t\\t\\treturn;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tvar gradientId = instanceFillValue.slice( instanceFillValue.indexOf( \\\"#\\\" ) + 1, instanceFillValue.length - 1 );\\r\\n\\t\\t\\t\\t\\tif ( fabric.gradientDefs[ this.svgUid ][ gradientId ] ) {\\r\\n\\t\\t\\t\\t\\t\\tobj.set( property, fabric.Gradient.fromElement( fabric.gradientDefs[ this.svgUid ][ gradientId ], obj ) );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t};\\r\\n\\r\\n\\t\\t\\t\\t// BEFORE CAPTURING\\r\\n\\t\\t\\t\\t_this.handleCallback( cfg.beforeCapture, cfg );\\r\\n\\r\\n\\t\\t\\t\\t// GATHER SVGS\\r\\n\\t\\t\\t\\tvar svgs = _this.setup.chart.containerDiv.getElementsByTagName( \\\"svg\\\" );\\r\\n\\t\\t\\t\\tfor ( i1 = 0; i1 < svgs.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\tvar group = {\\r\\n\\t\\t\\t\\t\\t\\tsvg: svgs[ i1 ],\\r\\n\\t\\t\\t\\t\\t\\tparent: svgs[ i1 ].parentNode,\\r\\n\\t\\t\\t\\t\\t\\tchildren: svgs[ i1 ].getElementsByTagName( \\\"*\\\" ),\\r\\n\\t\\t\\t\\t\\t\\toffset: {\\r\\n\\t\\t\\t\\t\\t\\t\\tx: 0,\\r\\n\\t\\t\\t\\t\\t\\t\\ty: 0\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tpatterns: {},\\r\\n\\t\\t\\t\\t\\t\\tclippings: {}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// GATHER ELEMENTS\\r\\n\\t\\t\\t\\t\\tgroup = _this.gatherElements( group, cfg, images );\\r\\n\\r\\n\\t\\t\\t\\t\\t// APPEND GROUP\\r\\n\\t\\t\\t\\t\\tgroups.push( group );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// GATHER EXTERNAL LEGEND\\r\\n\\t\\t\\t\\tif ( _this.config.legend && _this.setup.chart.legend && _this.setup.chart.legend.position == \\\"outside\\\" ) {\\r\\n\\t\\t\\t\\t\\tvar group = {\\r\\n\\t\\t\\t\\t\\t\\tsvg: _this.setup.chart.legend.container.container,\\r\\n\\t\\t\\t\\t\\t\\tparent: _this.setup.chart.legend.container.container.parentNode,\\r\\n\\t\\t\\t\\t\\t\\tchildren: _this.setup.chart.legend.container.container.getElementsByTagName( \\\"*\\\" ),\\r\\n\\t\\t\\t\\t\\t\\toffset: {\\r\\n\\t\\t\\t\\t\\t\\t\\tx: 0,\\r\\n\\t\\t\\t\\t\\t\\t\\ty: 0\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tlegend: {\\r\\n\\t\\t\\t\\t\\t\\t\\ttype: [ \\\"top\\\", \\\"left\\\" ].indexOf( _this.config.legend.position ) != -1 ? \\\"unshift\\\" : \\\"push\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\tposition: _this.config.legend.position,\\r\\n\\t\\t\\t\\t\\t\\t\\twidth: _this.config.legend.width ? _this.config.legend.width : _this.setup.chart.legend.container.width,\\r\\n\\t\\t\\t\\t\\t\\t\\theight: _this.config.legend.height ? _this.config.legend.height : _this.setup.chart.legend.container.height\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tpatterns: {},\\r\\n\\t\\t\\t\\t\\t\\tclippings: {}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// ADAPT CANVAS DIMENSIONS\\r\\n\\t\\t\\t\\t\\tif ( [ \\\"left\\\", \\\"right\\\" ].indexOf( group.legend.position ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.width += group.legend.width;\\r\\n\\t\\t\\t\\t\\t\\toffset.height = group.legend.height > offset.height ? group.legend.height : offset.height;\\r\\n\\t\\t\\t\\t\\t} else if ( [ \\\"top\\\", \\\"bottom\\\" ].indexOf( group.legend.position ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.height += group.legend.height;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// GATHER ELEMENTS\\r\\n\\t\\t\\t\\t\\tgroup = _this.gatherElements( group, cfg, images );\\r\\n\\r\\n\\t\\t\\t\\t\\t// PRE/APPEND SVG\\r\\n\\t\\t\\t\\t\\tgroups[ group.legend.type ]( group );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// CLEAR IF EXIST\\r\\n\\t\\t\\t\\t_this.drawing.buffer.enabled = cfg.action == \\\"draw\\\";\\r\\n\\r\\n\\t\\t\\t\\t_this.setup.wrapper = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t_this.setup.wrapper.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-canvas\\\" );\\r\\n\\t\\t\\t\\t_this.setup.chart.containerDiv.appendChild( _this.setup.wrapper );\\r\\n\\r\\n\\t\\t\\t\\t// STOCK CHART; SELECTOR OFFSET\\r\\n\\t\\t\\t\\tif ( _this.setup.chart.type == \\\"stock\\\" ) {\\r\\n\\t\\t\\t\\t\\tvar padding = {\\r\\n\\t\\t\\t\\t\\t\\ttop: 0,\\r\\n\\t\\t\\t\\t\\t\\tright: 0,\\r\\n\\t\\t\\t\\t\\t\\tbottom: 0,\\r\\n\\t\\t\\t\\t\\t\\tleft: 0\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.leftContainer ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.width -= _this.setup.chart.leftContainer.offsetWidth;\\r\\n\\t\\t\\t\\t\\t\\tpadding.left = _this.setup.chart.leftContainer.offsetWidth + ( _this.setup.chart.panelsSettings.panelSpacing * 2 );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.rightContainer ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.width -= _this.setup.chart.rightContainer.offsetWidth;\\r\\n\\t\\t\\t\\t\\t\\tpadding.right = _this.setup.chart.rightContainer.offsetWidth + ( _this.setup.chart.panelsSettings.panelSpacing * 2 );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.periodSelector && [ \\\"top\\\", \\\"bottom\\\" ].indexOf( _this.setup.chart.periodSelector.position ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.height -= _this.setup.chart.periodSelector.offsetHeight + _this.setup.chart.panelsSettings.panelSpacing;\\r\\n\\t\\t\\t\\t\\t\\tpadding[ _this.setup.chart.periodSelector.position ] += _this.setup.chart.periodSelector.offsetHeight + _this.setup.chart.panelsSettings.panelSpacing;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.dataSetSelector && [ \\\"top\\\", \\\"bottom\\\" ].indexOf( _this.setup.chart.dataSetSelector.position ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.height -= _this.setup.chart.dataSetSelector.offsetHeight;\\r\\n\\t\\t\\t\\t\\t\\tpadding[ _this.setup.chart.dataSetSelector.position ] += _this.setup.chart.dataSetSelector.offsetHeight;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// APPLY OFFSET ON WRAPPER\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.paddingTop = _this.numberToPx( padding.top );\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.paddingRight = _this.numberToPx( padding.right );\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.paddingBottom = _this.numberToPx( padding.bottom );\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.paddingLeft = _this.numberToPx( padding.left );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// CREATE CANVAS\\r\\n\\t\\t\\t\\t_this.setup.canvas = document.createElement( \\\"canvas\\\" );\\r\\n\\t\\t\\t\\t_this.setup.wrapper.appendChild( _this.setup.canvas );\\r\\n\\t\\t\\t\\t_this.setup.fabric = new fabric.Canvas( _this.setup.canvas, _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\twidth: offset.width,\\r\\n\\t\\t\\t\\t\\theight: offset.height,\\r\\n\\t\\t\\t\\t\\tisDrawingMode: true\\r\\n\\t\\t\\t\\t}, cfg ) );\\r\\n\\r\\n\\t\\t\\t\\t// REAPPLY FOR SOME REASON\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.setup.fabric, cfg );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.setup.fabric.freeDrawingBrush, cfg.drawing );\\r\\n\\r\\n\\t\\t\\t\\t// RELIABLE VARIABLES; UPDATE DRAWING\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.drawing, cfg.drawing );\\r\\n\\t\\t\\t\\t_this.drawing.handler.change( cfg.drawing );\\r\\n\\r\\n\\t\\t\\t\\t// OBSERVE MOUSE EVENTS\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"mouse:down\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar p = _this.gatherPosition( e.e, 1 );\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.pressedTS = Number( new Date() );\\r\\n\\t\\t\\t\\t\\t_this.isPressed( e.e );\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"mouse:move\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar p = _this.gatherPosition( e.e, 2 );\\r\\n\\t\\t\\t\\t\\t_this.isPressed( e.e );\\r\\n\\r\\n\\t\\t\\t\\t\\t// CREATE INITIAL LINE / ARROW; JUST ON LEFT CLICK\\r\\n\\t\\t\\t\\t\\tif ( _this.drawing.buffer.isPressed && !_this.drawing.buffer.line ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( !_this.drawing.buffer.isSelected && _this.drawing.mode != \\\"pencil\\\" && ( p.xD > 5 || p.xD > 5 ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.buffer.hasLine = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.isDrawingMode = false;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric._onMouseUpInDrawingMode( e );\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.buffer.line = _this.drawing.handler.line( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tx1: p.x1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ty1: p.y1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tx2: p.x2,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ty2: p.y2,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrow: _this.drawing.mode == \\\"line\\\" ? false : _this.drawing.arrow,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"config\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// UPDATE LINE / ARROW\\r\\n\\t\\t\\t\\t\\tif ( _this.drawing.buffer.line ) {\\r\\n\\t\\t\\t\\t\\t\\tvar obj, top, left;\\r\\n\\t\\t\\t\\t\\t\\tvar l = _this.drawing.buffer.line;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tl.x2 = p.x2;\\r\\n\\t\\t\\t\\t\\t\\tl.y2 = p.y2;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < l.group.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tobj = l.group[ i1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( obj instanceof fabric.Line ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tobj.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tx2: l.x2,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ty2: l.y2\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t} else if ( obj instanceof fabric.Triangle ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tl.angle = ( _this.getAngle( l.x1, l.y1, l.x2, l.y2 ) + 90 );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( l.arrow == \\\"start\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttop = l.y1 + ( l.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft = l.x1 + ( l.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( l.arrow == \\\"middle\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttop = l.y2 + ( l.width / 2 ) - ( ( l.y2 - l.y1 ) / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft = l.x2 + ( l.width / 2 ) - ( ( l.x2 - l.x1 ) / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else { // arrow: end\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttop = l.y2 + ( l.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft = l.x2 + ( l.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tobj.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: top,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: left,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tangle: l.angle\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"mouse:up\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\t// SELECT TARGET\\r\\n\\t\\t\\t\\t\\tif ( Number( new Date() ) - _this.drawing.buffer.pressedTS < 200 ) {\\r\\n\\t\\t\\t\\t\\t\\tvar target = _this.setup.fabric.findTarget( e.e );\\r\\n\\t\\t\\t\\t\\t\\tif ( target && target.selectable ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.setActiveObject( target );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// UPDATE LINE / ARROW\\r\\n\\t\\t\\t\\t\\tif ( _this.drawing.buffer.line ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.drawing.buffer.line.group.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.buffer.line.group[ i1 ].remove();\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tdelete _this.drawing.buffer.line.action;\\r\\n\\t\\t\\t\\t\\t\\tdelete _this.drawing.buffer.line.group;\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.handler.line( _this.drawing.buffer.line );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.line = false;\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.hasLine = false;\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.isPressed = false;\\r\\n\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t// OBSERVE OBJECT SELECTION\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"object:selected\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.isSelected = true;\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.target = e.target;\\r\\n\\t\\t\\t\\t\\t_this.setup.fabric.isDrawingMode = false;\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"selection:cleared\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.onMouseDown = _this.setup.fabric.freeDrawingBrush.onMouseDown;\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.target = false;\\r\\n\\r\\n\\t\\t\\t\\t\\t// FREEHAND WORKAROUND\\r\\n\\t\\t\\t\\t\\tif ( _this.drawing.buffer.isSelected ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric._isCurrentlyDrawing = false;\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.freeDrawingBrush.onMouseDown = function() {};\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// DELAYED DESELECTION TO PREVENT DRAWING\\r\\n\\t\\t\\t\\t\\tsetTimeout( function() {\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.buffer.isSelected = false;\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.isDrawingMode = true;\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.freeDrawingBrush.onMouseDown = _this.drawing.buffer.onMouseDown;\\r\\n\\t\\t\\t\\t\\t}, 10 );\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"path:created\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar item = e.path;\\r\\n\\t\\t\\t\\t\\tif ( Number( new Date() ) - _this.drawing.buffer.pressedTS < 200 || _this.drawing.buffer.hasLine ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.remove( item );\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\t\\t\\t\\t\\t\\treturn;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t// OBSERVE OBJECT MODIFICATIONS\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"object:added\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar item = e.target;\\r\\n\\t\\t\\t\\t\\tvar state = _this.deepMerge( item.saveState().originalState, {\\r\\n\\t\\t\\t\\t\\t\\tcfg: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcolor: _this.drawing.color,\\r\\n\\t\\t\\t\\t\\t\\t\\twidth: _this.drawing.width,\\r\\n\\t\\t\\t\\t\\t\\t\\topacity: _this.drawing.opacity,\\r\\n\\t\\t\\t\\t\\t\\t\\tfontSize: _this.drawing.fontSize\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( Number( new Date() ) - _this.drawing.buffer.pressedTS < 200 && !item.noUndo ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.remove( item );\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\t\\t\\t\\t\\t\\treturn;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tstate = JSON.stringify( state );\\r\\n\\t\\t\\t\\t\\titem.recentState = state;\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( item.selectable && !item.known && !item.noUndo ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.undos.push( {\\r\\n\\t\\t\\t\\t\\t\\t\\taction: \\\"added\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\ttarget: item,\\r\\n\\t\\t\\t\\t\\t\\t\\tstate: state\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.undos.push( {\\r\\n\\t\\t\\t\\t\\t\\t\\taction: \\\"addified\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\ttarget: item,\\r\\n\\t\\t\\t\\t\\t\\t\\tstate: state\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.redos = [];\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\titem.known = true;\\r\\n\\t\\t\\t\\t\\t_this.setup.fabric.isDrawingMode = true;\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"object:modified\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar item = e.target;\\r\\n\\t\\t\\t\\t\\tvar recentState = JSON.parse( item.recentState );\\r\\n\\t\\t\\t\\t\\tvar state = _this.deepMerge( item.saveState().originalState, {\\r\\n\\t\\t\\t\\t\\t\\tcfg: recentState.cfg\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\tstate = JSON.stringify( state );\\r\\n\\t\\t\\t\\t\\titem.recentState = state;\\r\\n\\r\\n\\t\\t\\t\\t\\t_this.drawing.undos.push( {\\r\\n\\t\\t\\t\\t\\t\\taction: \\\"modified\\\",\\r\\n\\t\\t\\t\\t\\t\\ttarget: item,\\r\\n\\t\\t\\t\\t\\t\\tstate: state\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t_this.drawing.redos = [];\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"text:changed\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar item = e.target;\\r\\n\\t\\t\\t\\t\\tclearTimeout( item.timer );\\r\\n\\t\\t\\t\\t\\titem.timer = setTimeout( function() {\\r\\n\\t\\t\\t\\t\\t\\tvar state = JSON.stringify( item.saveState().originalState );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\titem.recentState = state;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.redos = [];\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.undos.push( {\\r\\n\\t\\t\\t\\t\\t\\t\\taction: \\\"modified\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\ttarget: item,\\r\\n\\t\\t\\t\\t\\t\\t\\tstate: state\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t}, 250 );\\r\\n\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t// DRAWING\\r\\n\\t\\t\\t\\tif ( _this.drawing.buffer.enabled ) {\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-canvas active\\\" );\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.backgroundColor = cfg.backgroundColor;\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.display = \\\"block\\\";\\r\\n\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-canvas\\\" );\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.display = \\\"none\\\";\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tfor ( i1 = 0; i1 < groups.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\tvar group = groups[ i1 ];\\r\\n\\t\\t\\t\\t\\tvar isLegend = _this.gatherClassName( group.parent, _this.setup.chart.classNamePrefix + \\\"-legend-div\\\", 1 );\\r\\n\\t\\t\\t\\t\\tvar isPanel = _this.gatherClassName( group.parent, _this.setup.chart.classNamePrefix + \\\"-stock-panel-div\\\" );\\r\\n\\t\\t\\t\\t\\tvar isScrollbar = _this.gatherClassName( group.parent, _this.setup.chart.classNamePrefix + \\\"-scrollbar-chart-div\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t// STOCK CHART; SVG OFFSET;; SVG OFFSET\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.type == \\\"stock\\\" && _this.setup.chart.legendSettings.position ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// TOP / BOTTOM\\r\\n\\t\\t\\t\\t\\t\\tif ( [ \\\"top\\\", \\\"bottom\\\" ].indexOf( _this.setup.chart.legendSettings.position ) != -1 ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// POSITION; ABSOLUTE\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.parent.style.top && group.parent.style.left ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y = _this.pxToNumber( group.parent.style.top );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.x = _this.pxToNumber( group.parent.style.left );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// POSITION; RELATIVE\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.x = offset.x;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y = offset.y;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toffset.y += _this.pxToNumber( group.parent.style.height );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// LEGEND; OFFSET\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( isPanel ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toffset.pY = _this.pxToNumber( isPanel.style.marginTop );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y += offset.pY;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// SCROLLBAR; OFFSET\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( isScrollbar ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y += offset.pY;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// LEFT / RIGHT\\r\\n\\t\\t\\t\\t\\t\\t} else if ( [ \\\"left\\\", \\\"right\\\" ].indexOf( _this.setup.chart.legendSettings.position ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.y = _this.pxToNumber( group.parent.style.top ) + offset.pY;\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.x = _this.pxToNumber( group.parent.style.left ) + offset.pX;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// LEGEND; OFFSET\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( isLegend ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toffset.pY += _this.pxToNumber( isPanel.style.height ) + _this.setup.chart.panelsSettings.panelSpacing;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// SCROLLBAR; OFFSET\\r\\n\\t\\t\\t\\t\\t\\t\\t} else if ( isScrollbar ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y -= _this.setup.chart.panelsSettings.panelSpacing;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// REGULAR CHARTS; SVG OFFSET\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t// POSITION; ABSOLUTE\\r\\n\\t\\t\\t\\t\\t\\tif ( group.parent.style.position == \\\"absolute\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.absolute = true;\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.top = _this.pxToNumber( group.parent.style.top );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.right = _this.pxToNumber( group.parent.style.right, true );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.bottom = _this.pxToNumber( group.parent.style.bottom, true );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.left = _this.pxToNumber( group.parent.style.left );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.width = _this.pxToNumber( group.parent.style.width );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.height = _this.pxToNumber( group.parent.style.height );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// POSITION; RELATIVE\\r\\n\\t\\t\\t\\t\\t\\t} else if ( group.parent.style.top && group.parent.style.left ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.y = _this.pxToNumber( group.parent.style.top );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.x = _this.pxToNumber( group.parent.style.left );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// POSITION; GENERIC\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// EXTERNAL LEGEND\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.legend ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( group.legend.position == \\\"left\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toffset.x += group.legend.width;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( group.legend.position == \\\"right\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.x += offset.width - group.legend.width;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( group.legend.position == \\\"top\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toffset.y += group.legend.height;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( group.legend.position == \\\"bottom\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y += offset.height - group.legend.height; // OFFSET.Y\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// NORMAL\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.x = offset.x;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y = offset.y + offset.pY;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toffset.y += _this.pxToNumber( group.parent.style.height );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// PANEL\\r\\n\\t\\t\\t\\t\\t\\tif ( isLegend && isPanel && isPanel.style.marginTop ) {\\r\\n\\t\\t\\t\\t\\t\\t\\toffset.y += _this.pxToNumber( isPanel.style.marginTop );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.y += _this.pxToNumber( isPanel.style.marginTop );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// ADD TO CANVAS\\r\\n\\t\\t\\t\\t\\tfabric.parseSVGDocument( group.svg, ( function( group ) {\\r\\n\\t\\t\\t\\t\\t\\treturn function( objects, options ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar i1;\\r\\n\\t\\t\\t\\t\\t\\t\\tvar g = fabric.util.groupSVGElements( objects, options );\\r\\n\\t\\t\\t\\t\\t\\t\\tvar paths = [];\\r\\n\\t\\t\\t\\t\\t\\t\\tvar tmp = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tselectable: false\\r\\n\\t\\t\\t\\t\\t\\t\\t};\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// GROUP OFFSET; ABSOLUTE\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.offset.absolute ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( group.offset.bottom !== undefined ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.top = offset.height - group.offset.height - group.offset.bottom;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.top = group.offset.top;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( group.offset.right !== undefined ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.left = offset.width - group.offset.width - group.offset.right;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.left = group.offset.left;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// GROUP OFFSET; REGULAR\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttmp.top = group.offset.y;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttmp.left = group.offset.x;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// WALKTHROUGH ELEMENTS\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < g.paths.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar PID = null;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// OPACITY; TODO: DISTINGUISH OPACITY TYPES\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( g.paths[ i1 ] ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// CHECK ORIGIN; REMOVE TAINTED\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.removeImages && _this.isTainted( g.paths[ i1 ][ \\\"xlink:href\\\" ] ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcontinue;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// SET OPACITY\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( g.paths[ i1 ].fill instanceof Object ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// MISINTERPRETATION OF FABRIC\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( g.paths[ i1 ].fill.type == \\\"radial\\\" ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// PIE EXCEPTION\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( _this.setup.chart.type == \\\"pie\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmp_n = g.paths[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmp_c = tmp_n.getCenterPoint();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmp_cp = tmp_n.group.getCenterPoint();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmp_cd = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tx: tmp_n.pathOffset.x - tmp_cp.x,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ty: tmp_n.pathOffset.y - tmp_cp.y\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t};\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].fill.gradientTransform[ 4 ] = tmp_n.pathOffset.x - tmp_cd.x;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].fill.gradientTransform[ 5 ] = tmp_n.pathOffset.y - tmp_cd.y;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// OTHERS\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].fill.coords.r2 = g.paths[ i1 ].fill.coords.r1 * -1;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].fill.coords.r1 = 0;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: g.paths[ i1 ].fillOpacity\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// FILLING; TODO: DISTINGUISH OPACITY TYPES\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else if ( PID = _this.isHashbanged( g.paths[ i1 ].fill ) ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// PATTERN\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( group.patterns && group.patterns[ PID ] ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar props = group.patterns[ PID ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// LOAD IMAGE MANUALLY; TO RERENDER THE CANVAS\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfabric.Image.fromURL( props.source, ( function( props, i1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function( img ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\timages.loaded++;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar pattern = null;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar patternSourceCanvas = new fabric.StaticCanvas( undefined, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tbackgroundColor: props.fill\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpatternSourceCanvas.add( img );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpattern = new fabric.Pattern( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tsource: function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpatternSourceCanvas.setDimensions( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\twidth: props.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\theight: props.height\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn patternSourceCanvas.getElement();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\trepeat: 'repeat'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfill: pattern,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: g.paths[ i1 ].fillOpacity\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} )( props, i1 ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// CLIPPATH;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( PID = _this.isHashbanged( g.paths[ i1 ].clipPath ) ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( group.clippings && group.clippings[ PID ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclipTo: ( function( i1, PID ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function( ctx ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar cp = group.clippings[ PID ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tm = this.transformMatrix || [ 1, 0, 0, 1, 0, 0 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar dim = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: ( cp.bbox.y - tm[ 5 ] ) + cp.transform[ 5 ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: ( cp.bbox.x - tm[ 4 ] ) + cp.transform[ 4 ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\twidth: cp.bbox.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\theight: cp.bbox.height\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tctx.rect( dim.left, dim.top, dim.width, dim.height );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} )( i1, PID )\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// TODO; WAIT FOR TSPAN SUPPORT FROM FABRICJS SIDE\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( g.paths[ i1 ].TSPANWORKAROUND ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar parsedAttributes = fabric.parseAttributes( g.paths[ i1 ].svg, fabric.Text.ATTRIBUTE_NAMES );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar options = fabric.util.object.extend( {}, parsedAttributes );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// CREATE NEW SET\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmpBuffer = [];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfor ( var i = 0; i < g.paths[ i1 ].svg.childNodes.length; i++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar textNode = g.paths[ i1 ].svg.childNodes[ i ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar textElement = fabric.Text.fromElement( textNode, options );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextElement.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttmpBuffer.push( textElement );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// HIDE ORIGINAL ELEMENT\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// REPLACE BY GROUP AND CANCEL FIRST OFFSET\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmpGroup = new fabric.Group( tmpBuffer, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: g.paths[ i1 ].top * -1\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( tmpGroup );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tpaths.push( g.paths[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// REPLACE WITH WHITELIST\\r\\n\\t\\t\\t\\t\\t\\t\\tg.paths = paths;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// SET PROPS\\r\\n\\t\\t\\t\\t\\t\\t\\tg.set( tmp );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ADD TO CANVAS\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( g );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ADD BALLOONS\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.svg.parentNode && group.svg.parentNode.getElementsByTagName ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar balloons = group.svg.parentNode.getElementsByClassName( _this.setup.chart.classNamePrefix + \\\"-balloon-div\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < balloons.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.balloonFunction instanceof Function ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcfg.balloonFunction.apply( _this, [ balloons[ i1 ], group ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar elm_parent = balloons[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar style_parent = fabric.parseStyleAttribute( elm_parent );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar style_text = fabric.parseStyleAttribute( elm_parent.childNodes[ 0 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar fabric_label = new fabric.Text( elm_parent.innerText || elm_parent.innerHTML, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tselectable: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: style_parent.top + group.offset.y,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: style_parent.left + group.offset.x,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfill: style_text[ \\\"color\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfontSize: style_text[ \\\"fontSize\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfontFamily: style_text[ \\\"fontFamily\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextAlign: style_text[ \\\"text-align\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( fabric_label );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.svg.nextSibling && group.svg.nextSibling.tagName == \\\"A\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar elm_parent = group.svg.nextSibling;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar style_parent = fabric.parseStyleAttribute( elm_parent );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar fabric_label = new fabric.Text( elm_parent.innerText || elm_parent.innerHTML, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tselectable: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: style_parent.top + group.offset.y,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: style_parent.left + group.offset.x,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfill: style_parent[ \\\"color\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfontSize: style_parent[ \\\"fontSize\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfontFamily: style_parent[ \\\"fontFamily\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: style_parent[ \\\"opacity\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( fabric_label );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tgroups.pop();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// TRIGGER CALLBACK WITH SAFETY DELAY\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( !groups.length ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar timer = setInterval( function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( images.loaded == images.included ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclearTimeout( timer );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.handleCallback( cfg.afterCapture, cfg );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.handleCallback( callback, cfg );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, AmCharts.updateRate );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// IDENTIFY ELEMENTS THROUGH CLASSNAMES\\r\\n\\t\\t\\t\\t\\t} )( group ), function( svg, obj ) {\\r\\n\\t\\t\\t\\t\\t\\tvar i1;\\r\\n\\t\\t\\t\\t\\t\\tvar className = _this.gatherAttribute( svg, \\\"class\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar visibility = _this.gatherAttribute( svg, \\\"visibility\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar clipPath = _this.gatherAttribute( svg, \\\"clip-path\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tobj.className = String( className );\\r\\n\\t\\t\\t\\t\\t\\tobj.classList = String( className ).split( \\\" \\\" );\\r\\n\\t\\t\\t\\t\\t\\tobj.clipPath = clipPath;\\r\\n\\t\\t\\t\\t\\t\\tobj.svg = svg;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// TODO; WAIT FOR TSPAN SUPPORT FROM FABRICJS SIDE\\r\\n\\t\\t\\t\\t\\t\\tif ( svg.tagName == \\\"text\\\" && svg.childNodes.length > 1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tobj.TSPANWORKAROUND = true;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// HIDE HIDDEN ELEMENTS; TODO: FIND A BETTER WAY TO HANDLE THAT\\r\\n\\t\\t\\t\\t\\t\\tif ( visibility == \\\"hidden\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tobj.opacity = 0;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// WALKTHROUGH ELEMENTS\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// TRANSPORT FILL/STROKE OPACITY\\r\\n\\t\\t\\t\\t\\t\\t\\tvar attrs = [ \\\"fill\\\", \\\"stroke\\\" ];\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < attrs.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar attr = attrs[ i1 ]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar attrVal = String( svg.getAttribute( attr ) || \\\"\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar attrOpacity = Number( svg.getAttribute( attr + \\\"-opacity\\\" ) || \\\"1\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar attrRGBA = fabric.Color.fromHex( attrVal ).getSource();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// EXCEPTION\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( obj.classList.indexOf( _this.setup.chart.classNamePrefix + \\\"-guide-fill\\\" ) != -1 && !attrVal ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattrOpacity = 0;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattrRGBA = fabric.Color.fromHex( \\\"#000000\\\" ).getSource();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( attrRGBA ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattrRGBA.pop();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattrRGBA.push( attrOpacity )\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobj[ attr ] = \\\"rgba(\\\" + attrRGBA.join() + \\\")\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobj[ attr + _this.capitalize( \\\"opacity\\\" ) ] = attrOpacity;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// REVIVER\\r\\n\\t\\t\\t\\t\\t\\t_this.handleCallback( cfg.reviver, obj, svg );\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Returns the current canvas\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoCanvas: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t// NUFFIN\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data = _this.setup.canvas;\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Returns an image; by default PNG\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoImage: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tformat: \\\"png\\\",\\r\\n\\t\\t\\t\\t\\tquality: 1,\\r\\n\\t\\t\\t\\t\\tmultiplier: 1\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data = cfg.data;\\r\\n\\t\\t\\t\\tvar img = document.createElement( \\\"img\\\" );\\r\\n\\r\\n\\t\\t\\t\\tif ( !cfg.data ) {\\r\\n\\t\\t\\t\\t\\tif ( cfg.lossless || cfg.format == \\\"svg\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tdata = _this.toSVG( _this.deepMerge( cfg, {\\r\\n\\t\\t\\t\\t\\t\\t\\tgetBase64: true\\r\\n\\t\\t\\t\\t\\t\\t} ) );\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tdata = _this.setup.fabric.toDataURL( cfg );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\timg.setAttribute( \\\"src\\\", data );\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, img );\\r\\n\\r\\n\\t\\t\\t\\treturn img;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates a blob instance image; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoBlob: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdata: \\\"empty\\\",\\r\\n\\t\\t\\t\\t\\ttype: \\\"text/plain\\\"\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data;\\r\\n\\t\\t\\t\\tvar isBase64 = /^data:.+;base64,(.*)$/.exec( cfg.data );\\r\\n\\r\\n\\t\\t\\t\\t// GATHER BODY\\r\\n\\t\\t\\t\\tif ( isBase64 ) {\\r\\n\\t\\t\\t\\t\\tcfg.data = isBase64[ 0 ];\\r\\n\\t\\t\\t\\t\\tcfg.type = cfg.data.slice( 5, cfg.data.indexOf( \\\",\\\" ) - 7 );\\r\\n\\t\\t\\t\\t\\tcfg.data = _this.toByteArray( {\\r\\n\\t\\t\\t\\t\\t\\tdata: cfg.data.slice( cfg.data.indexOf( \\\",\\\" ) + 1, cfg.data.length )\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tif ( cfg.getByteArray ) {\\r\\n\\t\\t\\t\\t\\tdata = cfg.data;\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\tdata = new Blob( [ cfg.data ], {\\r\\n\\t\\t\\t\\t\\t\\ttype: cfg.type\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates JPG image; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoJPG: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tformat: \\\"jpeg\\\",\\r\\n\\t\\t\\t\\t\\tquality: 1,\\r\\n\\t\\t\\t\\t\\tmultiplier: 1\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tcfg.format = cfg.format.toLowerCase();\\r\\n\\t\\t\\t\\tvar data = _this.setup.fabric.toDataURL( cfg );\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates PNG image; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoPNG: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tformat: \\\"png\\\",\\r\\n\\t\\t\\t\\t\\tquality: 1,\\r\\n\\t\\t\\t\\t\\tmultiplier: 1\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data = _this.setup.fabric.toDataURL( cfg );\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates SVG image; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoSVG: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\treviver: function( string ) {\\r\\n\\t\\t\\t\\t\\t\\tvar matcher = new RegExp( /\\\\bstyle=(['\\\"])(.*?)\\\\1/ );\\r\\n\\t\\t\\t\\t\\t\\tvar match = matcher.exec( string )[ 0 ].slice( 7, -1 );\\r\\n\\t\\t\\t\\t\\t\\tvar styles = match.split( \\\";\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar replacement = [];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < styles.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( styles[ i1 ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar pair = styles[ i1 ].replace( /\\\\s/g, \\\"\\\" ).split( \\\":\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar key = pair[ 0 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar value = pair[ 1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( [ \\\"fill\\\", \\\"stroke\\\" ].indexOf( key ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = fabric.Color.fromRgba( value );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( value && value._source ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar color = \\\"#\\\" + value.toHex();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar opacity = value._source[ 3 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treplacement.push( [ key, color ].join( \\\":\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treplacement.push( [ key + \\\"-opacity\\\", opacity ].join( \\\":\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treplacement.push( styles[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( key != \\\"opactiy\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treplacement.push( styles[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\treturn string.replace( match, replacement.join( \\\";\\\" ) );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data = _this.setup.fabric.toSVG( cfg, cfg.reviver );\\r\\n\\r\\n\\t\\t\\t\\tif ( cfg.getBase64 ) {\\r\\n\\t\\t\\t\\t\\tdata = \\\"data:image/svg+xml;base64,\\\" + btoa( data );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates PDF; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoPDF: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tmultiplier: 2\\r\\n\\t\\t\\t\\t}, _this.config.pdfMake ), options || {}, true );\\r\\n\\t\\t\\t\\tcfg.images.reference = _this.toPNG( cfg );\\r\\n\\t\\t\\t\\tvar data = new pdfMake.createPdf( cfg );\\r\\n\\r\\n\\t\\t\\t\\tif ( callback ) {\\r\\n\\t\\t\\t\\t\\tdata.getDataUrl( ( function( callback ) {\\r\\n\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\tcallback.apply( _this, arguments );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} )( callback ) );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates an image; hides all elements on page to trigger native print method\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoPRINT: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar i1;\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdelay: 1,\\r\\n\\t\\t\\t\\t\\tlossless: false\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data = _this.toImage( cfg );\\r\\n\\t\\t\\t\\tvar states = [];\\r\\n\\t\\t\\t\\tvar items = document.body.childNodes;\\r\\n\\r\\n\\t\\t\\t\\tdata.setAttribute( \\\"style\\\", \\\"width: 100%; max-height: 100%;\\\" );\\r\\n\\r\\n\\t\\t\\t\\tfor ( i1 = 0; i1 < items.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\tif ( _this.isElement( items[ i1 ] ) ) {\\r\\n\\t\\t\\t\\t\\t\\tstates[ i1 ] = items[ i1 ].style.display;\\r\\n\\t\\t\\t\\t\\t\\titems[ i1 ].style.display = \\\"none\\\";\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tdocument.body.appendChild( data );\\r\\n\\t\\t\\t\\twindow.print();\\r\\n\\r\\n\\t\\t\\t\\tsetTimeout( function() {\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < items.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.isElement( items[ i1 ] ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\titems[ i1 ].style.display = states[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tdocument.body.removeChild( data );\\r\\n\\t\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\t\\t\\t\\t}, cfg.delay );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates JSON string\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoJSON: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdateFormat: _this.config.dateFormat || \\\"dateObject\\\",\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tcfg.data = cfg.data ? cfg.data : _this.getChartData( cfg );\\r\\n\\t\\t\\t\\tvar data = JSON.stringify( cfg.data, undefined, \\\"\\\\t\\\" );\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates CSV string\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoCSV: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar row, col;\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdata: _this.getChartData( options ),\\r\\n\\t\\t\\t\\t\\tdelimiter: \\\",\\\",\\r\\n\\t\\t\\t\\t\\tquotes: true,\\r\\n\\t\\t\\t\\t\\tescape: true,\\r\\n\\t\\t\\t\\t\\twithHeader: true\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tvar data = \\\"\\\";\\r\\n\\t\\t\\t\\tvar cols = [];\\r\\n\\t\\t\\t\\tvar buffer = [];\\r\\n\\r\\n\\t\\t\\t\\tfunction enchant( value, column ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t// WRAP IN QUOTES\\r\\n\\t\\t\\t\\t\\tif ( typeof value === \\\"string\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.escape ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue = value.replace( '\\\"', '\\\"\\\"' );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.quotes ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue = [ '\\\"', value, '\\\"' ].join( \\\"\\\" );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\treturn value;\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// HEADER\\r\\n\\t\\t\\t\\tfor ( value in cfg.data[ 0 ] ) {\\r\\n\\t\\t\\t\\t\\tbuffer.push( enchant( value ) );\\r\\n\\t\\t\\t\\t\\tcols.push( value );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\tif ( cfg.withHeader ) {\\r\\n\\t\\t\\t\\t\\tdata += buffer.join( cfg.delimiter ) + \\\"\\\\n\\\";\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// BODY\\r\\n\\t\\t\\t\\tfor ( row in cfg.data ) {\\r\\n\\t\\t\\t\\t\\tbuffer = [];\\r\\n\\t\\t\\t\\t\\tif ( !isNaN( row ) ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( col in cols ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( !isNaN( col ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar column = cols[ col ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar value = cfg.data[ row ][ column ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tbuffer.push( enchant( value, column ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tdata += buffer.join( cfg.delimiter ) + \\\"\\\\n\\\";\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates excel sheet; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoXLSX: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tname: \\\"amCharts\\\",\\r\\n\\t\\t\\t\\t\\tdateFormat: _this.config.dateFormat || \\\"dateObject\\\",\\r\\n\\t\\t\\t\\t\\twithHeader: true,\\r\\n\\t\\t\\t\\t\\tstringify: false\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tvar data = \\\"\\\";\\r\\n\\t\\t\\t\\tvar wb = {\\r\\n\\t\\t\\t\\t\\tSheetNames: [],\\r\\n\\t\\t\\t\\t\\tSheets: {}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tcfg.data = cfg.data ? cfg.data : _this.getChartData( cfg );\\r\\n\\r\\n\\t\\t\\t\\tfunction datenum( v, date1904 ) {\\r\\n\\t\\t\\t\\t\\tif ( date1904 ) v += 1462;\\r\\n\\t\\t\\t\\t\\tvar epoch = Date.parse( v );\\r\\n\\t\\t\\t\\t\\treturn ( epoch - new Date( Date.UTC( 1899, 11, 30 ) ) ) / ( 24 * 60 * 60 * 1000 );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tfunction sheet_from_array_of_arrays( data, opts ) {\\r\\n\\t\\t\\t\\t\\tvar ws = {};\\r\\n\\t\\t\\t\\t\\tvar range = {\\r\\n\\t\\t\\t\\t\\t\\ts: {\\r\\n\\t\\t\\t\\t\\t\\t\\tc: 10000000,\\r\\n\\t\\t\\t\\t\\t\\t\\tr: 10000000\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\te: {\\r\\n\\t\\t\\t\\t\\t\\t\\tc: 0,\\r\\n\\t\\t\\t\\t\\t\\t\\tr: 0\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t};\\r\\n\\t\\t\\t\\t\\tfor ( var R = 0; R != data.length; ++R ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( var C = 0; C != data[ R ].length; ++C ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( range.s.r > R ) range.s.r = R;\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( range.s.c > C ) range.s.c = C;\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( range.e.r < R ) range.e.r = R;\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( range.e.c < C ) range.e.c = C;\\r\\n\\t\\t\\t\\t\\t\\t\\tvar cell = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tv: data[ R ][ C ]\\r\\n\\t\\t\\t\\t\\t\\t\\t};\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cell.v == null ) continue;\\r\\n\\t\\t\\t\\t\\t\\t\\tvar cell_ref = XLSX.utils.encode_cell( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tc: C,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tr: R\\r\\n\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( typeof cell.v === \\\"number\\\" ) cell.t = \\\"n\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\telse if ( typeof cell.v === \\\"boolean\\\" ) cell.t = \\\"b\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\telse if ( cell.v instanceof Date ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcell.t = \\\"n\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcell.z = XLSX.SSF._table[ 14 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcell.v = datenum( cell.v );\\r\\n\\t\\t\\t\\t\\t\\t\\t} else cell.t = \\\"s\\\";\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tws[ cell_ref ] = cell;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tif ( range.s.c < 10000000 ) ws[ \\\"!ref\\\" ] = XLSX.utils.encode_range( range );\\r\\n\\t\\t\\t\\t\\treturn ws;\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\twb.SheetNames.push( cfg.name );\\r\\n\\t\\t\\t\\twb.Sheets[ cfg.name ] = sheet_from_array_of_arrays( _this.toArray( cfg ) );\\r\\n\\r\\n\\t\\t\\t\\tdata = XLSX.write( wb, {\\r\\n\\t\\t\\t\\t\\tbookType: \\\"xlsx\\\",\\r\\n\\t\\t\\t\\t\\tbookSST: true,\\r\\n\\t\\t\\t\\t\\ttype: \\\"base64\\\"\\r\\n\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\tdata = \\\"data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,\\\" + data;\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates an array of arrays\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoArray: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar row, col;\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdata: _this.getChartData( options ),\\r\\n\\t\\t\\t\\t\\twithHeader: false,\\r\\n\\t\\t\\t\\t\\tstringify: true\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tvar data = [];\\r\\n\\t\\t\\t\\tvar cols = [];\\r\\n\\r\\n\\t\\t\\t\\t// HEADER\\r\\n\\t\\t\\t\\tfor ( col in cfg.data[ 0 ] ) {\\r\\n\\t\\t\\t\\t\\tcols.push( col );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\tif ( cfg.withHeader ) {\\r\\n\\t\\t\\t\\t\\tdata.push( cols );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// BODY\\r\\n\\t\\t\\t\\tfor ( row in cfg.data ) {\\r\\n\\t\\t\\t\\t\\tvar buffer = [];\\r\\n\\t\\t\\t\\t\\tif ( !isNaN( row ) ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( col in cols ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( !isNaN( col ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar col = cols[ col ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar value = cfg.data[ row ][ col ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( value == null ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = \\\"\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( cfg.stringify ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = String( value );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = value;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tbuffer.push( value );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tdata.push( buffer );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates byte array with given base64 datastring; returns byte array\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoByteArray: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t// NUFFIN\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar Arr = ( typeof Uint8Array !== 'undefined' ) ? Uint8Array : Array\\r\\n\\t\\t\\t\\tvar PLUS = '+'.charCodeAt( 0 )\\r\\n\\t\\t\\t\\tvar SLASH = '/'.charCodeAt( 0 )\\r\\n\\t\\t\\t\\tvar NUMBER = '0'.charCodeAt( 0 )\\r\\n\\t\\t\\t\\tvar LOWER = 'a'.charCodeAt( 0 )\\r\\n\\t\\t\\t\\tvar UPPER = 'A'.charCodeAt( 0 )\\r\\n\\t\\t\\t\\tvar data = b64ToByteArray( cfg.data );\\r\\n\\r\\n\\t\\t\\t\\tfunction decode( elt ) {\\r\\n\\t\\t\\t\\t\\tvar code = elt.charCodeAt( 0 )\\r\\n\\t\\t\\t\\t\\tif ( code === PLUS )\\r\\n\\t\\t\\t\\t\\t\\treturn 62 // '+'\\r\\n\\t\\t\\t\\t\\tif ( code === SLASH )\\r\\n\\t\\t\\t\\t\\t\\treturn 63 // '/'\\r\\n\\t\\t\\t\\t\\tif ( code < NUMBER )\\r\\n\\t\\t\\t\\t\\t\\treturn -1 //no match\\r\\n\\t\\t\\t\\t\\tif ( code < NUMBER + 10 )\\r\\n\\t\\t\\t\\t\\t\\treturn code - NUMBER + 26 + 26\\r\\n\\t\\t\\t\\t\\tif ( code < UPPER + 26 )\\r\\n\\t\\t\\t\\t\\t\\treturn code - UPPER\\r\\n\\t\\t\\t\\t\\tif ( code < LOWER + 26 )\\r\\n\\t\\t\\t\\t\\t\\treturn code - LOWER + 26\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tfunction b64ToByteArray( b64 ) {\\r\\n\\t\\t\\t\\t\\tvar i, j, l, tmp, placeHolders, arr\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( b64.length % 4 > 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tthrow new Error( 'Invalid string. Length must be a multiple of 4' )\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// THE NUMBER OF EQUAL SIGNS (PLACE HOLDERS)\\r\\n\\t\\t\\t\\t\\t// IF THERE ARE TWO PLACEHOLDERS, THAN THE TWO CHARACTERS BEFORE IT\\r\\n\\t\\t\\t\\t\\t// REPRESENT ONE BYTE\\r\\n\\t\\t\\t\\t\\t// IF THERE IS ONLY ONE, THEN THE THREE CHARACTERS BEFORE IT REPRESENT 2 BYTES\\r\\n\\t\\t\\t\\t\\t// THIS IS JUST A CHEAP HACK TO NOT DO INDEXOF TWICE\\r\\n\\t\\t\\t\\t\\tvar len = b64.length\\r\\n\\t\\t\\t\\t\\tplaceHolders = '=' === b64.charAt( len - 2 ) ? 2 : '=' === b64.charAt( len - 1 ) ? 1 : 0\\r\\n\\r\\n\\t\\t\\t\\t\\t// BASE64 IS 4/3 + UP TO TWO CHARACTERS OF THE ORIGINAL DATA\\r\\n\\t\\t\\t\\t\\tarr = new Arr( b64.length * 3 / 4 - placeHolders )\\r\\n\\r\\n\\t\\t\\t\\t\\t// IF THERE ARE PLACEHOLDERS, ONLY GET UP TO THE LAST COMPLETE 4 CHARS\\r\\n\\t\\t\\t\\t\\tl = placeHolders > 0 ? b64.length - 4 : b64.length\\r\\n\\r\\n\\t\\t\\t\\t\\tvar L = 0\\r\\n\\r\\n\\t\\t\\t\\t\\tfunction push( v ) {\\r\\n\\t\\t\\t\\t\\t\\tarr[ L++ ] = v\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tfor ( i = 0, j = 0; i < l; i += 4, j += 3 ) {\\r\\n\\t\\t\\t\\t\\t\\ttmp = ( decode( b64.charAt( i ) ) << 18 ) | ( decode( b64.charAt( i + 1 ) ) << 12 ) | ( decode( b64.charAt( i + 2 ) ) << 6 ) | decode( b64.charAt( i + 3 ) )\\r\\n\\t\\t\\t\\t\\t\\tpush( ( tmp & 0xFF0000 ) >> 16 )\\r\\n\\t\\t\\t\\t\\t\\tpush( ( tmp & 0xFF00 ) >> 8 )\\r\\n\\t\\t\\t\\t\\t\\tpush( tmp & 0xFF )\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( placeHolders === 2 ) {\\r\\n\\t\\t\\t\\t\\t\\ttmp = ( decode( b64.charAt( i ) ) << 2 ) | ( decode( b64.charAt( i + 1 ) ) >> 4 )\\r\\n\\t\\t\\t\\t\\t\\tpush( tmp & 0xFF )\\r\\n\\t\\t\\t\\t\\t} else if ( placeHolders === 1 ) {\\r\\n\\t\\t\\t\\t\\t\\ttmp = ( decode( b64.charAt( i ) ) << 10 ) | ( decode( b64.charAt( i + 1 ) ) << 4 ) | ( decode( b64.charAt( i + 2 ) ) >> 2 )\\r\\n\\t\\t\\t\\t\\t\\tpush( ( tmp >> 8 ) & 0xFF )\\r\\n\\t\\t\\t\\t\\t\\tpush( tmp & 0xFF )\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\treturn arr\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Callback handler; injects additional arguments to callback\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\thandleCallback: function( callback ) {\\r\\n\\t\\t\\t\\tvar i1, data = Array();\\r\\n\\t\\t\\t\\tif ( callback && callback instanceof Function ) {\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < arguments.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( i1 > 0 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tdata.push( arguments[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tcallback.apply( _this, data );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Handles drag/drop events; loads given imagery\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\thandleDropbox: function( e ) {\\r\\n\\t\\t\\t\\tif ( _this.drawing.buffer.enabled ) {\\r\\n\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\te.stopPropagation();\\r\\n\\r\\n\\t\\t\\t\\t\\t// DRAG OVER\\r\\n\\t\\t\\t\\t\\tif ( e.type == \\\"dragover\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.wrapper.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-canvas active dropbox\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// DRAGLEAVE; DROP\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.wrapper.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-canvas active\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( e.type == \\\"drop\\\" && e.dataTransfer.files.length ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( var i1 = 0; i1 < e.dataTransfer.files.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar reader = new FileReader();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\treader.onloadend = ( function( index ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.add( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\turl: reader.result,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: e.layerY - ( index * 10 ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: e.layerX - ( index * 10 )\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} )( i1 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\treader.readAsDataURL( e.dataTransfer.files[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Gathers chart data according to its type\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tgetChartData: function( options ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdata: [],\\r\\n\\t\\t\\t\\t\\ttitles: {},\\r\\n\\t\\t\\t\\t\\tdateFields: [],\\r\\n\\t\\t\\t\\t\\tdataFields: [],\\r\\n\\t\\t\\t\\t\\tdataFieldsMap: {},\\r\\n\\t\\t\\t\\t\\texportTitles: _this.config.exportTitles,\\r\\n\\t\\t\\t\\t\\texportFields: _this.config.exportFields,\\r\\n\\t\\t\\t\\t\\texportSelection: _this.config.exportSelection,\\r\\n\\t\\t\\t\\t\\tcolumnNames: _this.config.columnNames\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tvar uid, i1, i2, i3;\\r\\n\\t\\t\\t\\tvar lookupFields = [ \\\"valueField\\\", \\\"openField\\\", \\\"closeField\\\", \\\"highField\\\", \\\"lowField\\\", \\\"xField\\\", \\\"yField\\\" ];\\r\\n\\r\\n\\t\\t\\t\\t// HANDLE FIELDS\\r\\n\\t\\t\\t\\tfunction addField( field, title, type ) {\\r\\n\\r\\n\\t\\t\\t\\t\\tfunction checkExistance( field, type ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.dataFields.indexOf( field ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\treturn checkExistance( [ field, \\\".\\\", type ].join( \\\"\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\treturn field;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( field && cfg.exportTitles && _this.setup.chart.type != \\\"gantt\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tuid = checkExistance( field, type );\\r\\n\\t\\t\\t\\t\\t\\tcfg.dataFieldsMap[ uid ] = field;\\r\\n\\t\\t\\t\\t\\t\\tcfg.dataFields.push( uid );\\r\\n\\t\\t\\t\\t\\t\\tcfg.titles[ uid ] = title || uid;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tif ( cfg.data.length == 0 ) {\\r\\n\\t\\t\\t\\t\\t// STOCK DATA; GATHER COMPARED GRAPHS\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.type == \\\"stock\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tcfg.data = _this.setup.chart.mainDataSet.dataProvider;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// CATEGORY AXIS\\r\\n\\t\\t\\t\\t\\t\\taddField( _this.setup.chart.mainDataSet.categoryField );\\r\\n\\t\\t\\t\\t\\t\\tcfg.dateFields.push( _this.setup.chart.mainDataSet.categoryField );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// WALKTHROUGH GRAPHS\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.setup.chart.mainDataSet.fieldMappings.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar fieldMap = _this.setup.chart.mainDataSet.fieldMappings[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < _this.setup.chart.panels.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar panel = _this.setup.chart.panels[ i2 ]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfor ( i3 = 0; i3 < panel.stockGraphs.length; i3++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar graph = panel.stockGraphs[ i3 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfor ( i4 = 0; i4 < lookupFields.length; i4++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( graph[ lookupFields[ i4 ] ] == fieldMap.toField ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taddField( fieldMap.fromField, graph.title, lookupFields[ i4 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// WALKTHROUGH COMPARISON AND MERGE IT'S DATA\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.setup.chart.comparedGraphs.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar graph = _this.setup.chart.comparedGraphs[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < graph.dataSet.dataProvider.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfor ( i3 = 0; i3 < graph.dataSet.fieldMappings.length; i3++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar fieldMap = graph.dataSet.fieldMappings[ i3 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar uid = graph.dataSet.id + \\\"_\\\" + fieldMap.toField;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( i2 < cfg.data.length ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcfg.data[ i2 ][ uid ] = graph.dataSet.dataProvider[ i2 ][ fieldMap.fromField ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( !cfg.titles[ uid ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taddField( uid, graph.dataSet.title )\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// GANTT DATA; FLATTEN SEGMENTS\\r\\n\\t\\t\\t\\t\\t} else if ( _this.setup.chart.type == \\\"gantt\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t// CATEGORY AXIS\\r\\n\\t\\t\\t\\t\\t\\taddField( _this.setup.chart.categoryField );\\r\\n\\t\\t\\t\\t\\t\\tcfg.dateFields.push( _this.setup.chart.categoryField );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tvar field = _this.setup.chart.segmentsField;\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.setup.chart.dataProvider.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar dataItem = _this.setup.chart.dataProvider[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( dataItem[ field ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < dataItem[ field ].length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdataItem[ field ][ i2 ][ _this.setup.chart.categoryField ] = dataItem[ _this.setup.chart.categoryField ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcfg.data.push( dataItem[ field ][ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// GRAPHS\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.setup.chart.graphs.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar graph = _this.setup.chart.graphs[ i1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < lookupFields.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar dataField = lookupFields[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar graphField = graph[ dataField ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar title = graph.title;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\taddField( graphField, graph.title, dataField );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// PIE/FUNNEL DATA;\\r\\n\\t\\t\\t\\t\\t} else if ( [ \\\"pie\\\", \\\"funnel\\\" ].indexOf( _this.setup.chart.type ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\tcfg.data = _this.setup.chart.dataProvider;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// CATEGORY AXIS\\r\\n\\t\\t\\t\\t\\t\\taddField( _this.setup.chart.titleField );\\r\\n\\t\\t\\t\\t\\t\\tcfg.dateFields.push( _this.setup.chart.titleField );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// VALUE\\r\\n\\t\\t\\t\\t\\t\\taddField( _this.setup.chart.valueField );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// DEFAULT DATA;\\r\\n\\t\\t\\t\\t\\t} else if ( _this.setup.chart.type != \\\"map\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tcfg.data = _this.setup.chart.dataProvider;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// CATEGORY AXIS\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.setup.chart.categoryAxis ) {\\r\\n\\t\\t\\t\\t\\t\\t\\taddField( _this.setup.chart.categoryField, _this.setup.chart.categoryAxis.title );\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( _this.setup.chart.categoryAxis.parseDates !== false ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.dateFields.push( _this.setup.chart.categoryField );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// GRAPHS\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.setup.chart.graphs.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar graph = _this.setup.chart.graphs[ i1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < lookupFields.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar dataField = lookupFields[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar graphField = graph[ dataField ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\taddField( graphField, graph.title, dataField );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn _this.processData( cfg );\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Walkthrough data to format dates and titles\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tprocessData: function( options ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdata: [],\\r\\n\\t\\t\\t\\t\\ttitles: {},\\r\\n\\t\\t\\t\\t\\tdateFields: [],\\r\\n\\t\\t\\t\\t\\tdataFields: [],\\r\\n\\t\\t\\t\\t\\tdataFieldsMap: {},\\r\\n\\t\\t\\t\\t\\tdataDateFormat: _this.setup.chart.dataDateFormat,\\r\\n\\t\\t\\t\\t\\tdateFormat: _this.config.dateFormat || _this.setup.chart.dataDateFormat || \\\"YYYY-MM-DD\\\",\\r\\n\\t\\t\\t\\t\\texportTitles: _this.config.exportTitles,\\r\\n\\t\\t\\t\\t\\texportFields: _this.config.exportFields,\\r\\n\\t\\t\\t\\t\\texportSelection: _this.config.exportSelection,\\r\\n\\t\\t\\t\\t\\tcolumnNames: _this.config.columnNames\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tvar i1, i2;\\r\\n\\r\\n\\t\\t\\t\\tif ( cfg.data.length ) {\\r\\n\\t\\t\\t\\t\\t// GATHER MISSING FIELDS\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < cfg.data.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( i2 in cfg.data[ i1 ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.dataFields.indexOf( i2 ) == -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.dataFields.push( i2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.dataFieldsMap[ i2 ] = i2;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// REMOVE FIELDS SELECTIVELY\\r\\n\\t\\t\\t\\t\\tif ( cfg.exportFields !== undefined ) {\\r\\n\\t\\t\\t\\t\\t\\tcfg.dataFields = cfg.dataFields.filter( function( n ) {\\r\\n\\t\\t\\t\\t\\t\\t\\treturn cfg.exportFields.indexOf( n ) != -1;\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// REBUILD DATA\\r\\n\\t\\t\\t\\t\\tvar buffer = [];\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < cfg.data.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tvar tmp = {};\\r\\n\\t\\t\\t\\t\\t\\tvar skip = false;\\r\\n\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < cfg.dataFields.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar uniqueField = cfg.dataFields[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\tvar dataField = cfg.dataFieldsMap[ uniqueField ];\\r\\n\\t\\t\\t\\t\\t\\t\\tvar title = ( cfg.columnNames && cfg.columnNames[ uniqueField ] ) || cfg.titles[ uniqueField ] || uniqueField;\\r\\n\\t\\t\\t\\t\\t\\t\\tvar value = cfg.data[ i1 ][ dataField ];\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( value == null ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvalue = undefined;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// TITLEFY\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.exportTitles && _this.setup.chart.type != \\\"gantt\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( title in tmp ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttitle += [ \\\"( \\\", uniqueField, \\\" )\\\" ].join( \\\"\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// PROCESS CATEGORY\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.dateFields.indexOf( dataField ) != -1 ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// CONVERT DATESTRING TO DATE OBJECT\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.dataDateFormat && ( value instanceof String || typeof value == \\\"string\\\" ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = AmCharts.stringToDate( value, cfg.dataDateFormat );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// CONVERT TIMESTAMP TO DATE OBJECT\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( cfg.dateFormat && ( value instanceof Number || typeof value == \\\"number\\\" ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = new Date( value );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// CATEGORY RANGE\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.exportSelection ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( value instanceof Date ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( value < chart.startDate || value > chart.endDate ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tskip = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else if ( i1 < chart.startIndex || i1 > chart.endIndex ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tskip = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// CATEGORY FORMAT\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.dateFormat && cfg.dateFormat != \\\"dateObject\\\" && value instanceof Date ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = AmCharts.formatDate( value, cfg.dateFormat );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\ttmp[ title ] = value;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( !skip ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tbuffer.push( tmp );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tcfg.data = buffer;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn cfg.data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Prettifies string\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tcapitalize: function( string ) {\\r\\n\\t\\t\\t\\treturn string.charAt( 0 ).toUpperCase() + string.slice( 1 ).toLowerCase();\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates export menu; returns UL node\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tcreateMenu: function( list, container ) {\\r\\n\\t\\t\\t\\tvar div;\\r\\n\\r\\n\\t\\t\\t\\tfunction buildList( list, container ) {\\r\\n\\t\\t\\t\\t\\tvar i1, i2, ul = document.createElement( \\\"ul\\\" );\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < list.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tvar item = typeof list[ i1 ] === \\\"string\\\" ? {\\r\\n\\t\\t\\t\\t\\t\\t\\tformat: list[ i1 ]\\r\\n\\t\\t\\t\\t\\t\\t} : list[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\tvar li = document.createElement( \\\"li\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar a = document.createElement( \\\"a\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar img = document.createElement( \\\"img\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar span = document.createElement( \\\"span\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar action = String( item.action ? item.action : item.format ).toLowerCase();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\titem.format = String( item.format ).toUpperCase();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// MERGE WITH GIVEN FORMAT\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.config.formats[ item.format ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\titem = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: item.icon ? \\\"\\\" : item.format,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: item.format,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmimeType: _this.config.formats[ item.format ].mimeType,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\textension: _this.config.formats[ item.format ].extension,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcapture: _this.config.formats[ item.format ].capture,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\taction: _this.config.action,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfileName: _this.config.fileName\\r\\n\\t\\t\\t\\t\\t\\t\\t}, item );\\r\\n\\t\\t\\t\\t\\t\\t} else if ( !item.label ) {\\r\\n\\t\\t\\t\\t\\t\\t\\titem.label = item.label ? item.label : _this.i18l( \\\"menu.label.\\\" + action );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// FILTER; TOGGLE FLAG\\r\\n\\t\\t\\t\\t\\t\\tif ( [ \\\"CSV\\\", \\\"JSON\\\", \\\"XLSX\\\" ].indexOf( item.format ) != -1 && [ \\\"map\\\", \\\"gauge\\\" ].indexOf( _this.setup.chart.type ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontinue;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// BLOB EXCEPTION\\r\\n\\t\\t\\t\\t\\t\\t} else if ( !_this.setup.hasBlob && item.format != \\\"UNDEFINED\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.mimeType && item.mimeType.split( \\\"/\\\" )[ 0 ] != \\\"image\\\" && item.mimeType != \\\"text/plain\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcontinue;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// DRAWING\\r\\n\\t\\t\\t\\t\\t\\tif ( item.action == \\\"draw\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( _this.config.fabric.drawing.enabled ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.menu = item.menu ? item.menu : _this.config.fabric.drawing.menu;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.click = ( function( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.capture( item, function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.createMenu( item.menu );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} )( item );\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.menu = [];\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// DRAWING CHOICES\\r\\n\\t\\t\\t\\t\\t\\t} else if ( !item.populated && item.action && item.action.indexOf( \\\"draw.\\\" ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar type = item.action.split( \\\".\\\" )[ 1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\tvar items = item[ type ] || _this.config.fabric.drawing[ type ] || [];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\titem.menu = [];\\r\\n\\t\\t\\t\\t\\t\\t\\titem.populated = true;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < items.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar tmp = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\"label\\\": items[ i2 ]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( type == \\\"shapes\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar io = items[ i2 ].indexOf( \\\"//\\\" ) == -1;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar url = ( io ? _this.config.path + \\\"shapes/\\\" : \\\"\\\" ) + items[ i2 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.action = \\\"add\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.url = url;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.icon = url;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.ignore = io;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp[ \\\"class\\\" ] = \\\"export-drawing-shape\\\";\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( type == \\\"colors\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.style = \\\"background-color: \\\" + items[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.action = \\\"change\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.color = items[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp[ \\\"class\\\" ] = \\\"export-drawing-color\\\";\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( type == \\\"widths\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.action = \\\"change\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.width = items[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.label = document.createElement( \\\"span\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.label.style.width = _this.numberToPx( items[ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.label.style.height = _this.numberToPx( items[ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp[ \\\"class\\\" ] = \\\"export-drawing-width\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( type == \\\"opacities\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.style = \\\"opacity: \\\" + items[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.action = \\\"change\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.opacity = items[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.label = ( items[ i2 ] * 100 ) + \\\"%\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp[ \\\"class\\\" ] = \\\"export-drawing-opacity\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( type == \\\"modes\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.label = _this.i18l( \\\"menu.label.draw.modes.\\\" + items[ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.click = ( function( mode ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.mode = mode;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} )( items[ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp[ \\\"class\\\" ] = \\\"export-drawing-mode\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.menu.push( tmp );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ADD CLICK HANDLER\\r\\n\\t\\t\\t\\t\\t\\t} else if ( !item.click && !item.menu && !item.items ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t// DRAWING METHODS\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( _this.drawing.handler[ action ] instanceof Function ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.action = action;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.click = ( function( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.drawing.handler[ item.action ]( item );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} )( item );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// DRAWING\\r\\n\\t\\t\\t\\t\\t\\t\\t} else if ( _this.drawing.buffer.enabled ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.click = ( function( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( this.config.drawing.autoClose ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.drawing.handler.done();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis[ \\\"to\\\" + item.format ]( item, function( data ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( item.action == \\\"download\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.download( data, item.mimeType, [ item.fileName, item.extension ].join( \\\".\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} )( item );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// REGULAR\\r\\n\\t\\t\\t\\t\\t\\t\\t} else if ( item.format != \\\"UNDEFINED\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.click = ( function( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( item.capture || item.action == \\\"print\\\" || item.format == \\\"PRINT\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.capture( item, function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( this.config.drawing.autoClose ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.drawing.handler.done();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis[ \\\"to\\\" + item.format ]( item, function( data ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( item.action == \\\"download\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.download( data, item.mimeType, [ item.fileName, item.extension ].join( \\\".\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} )\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} else if ( this[ \\\"to\\\" + item.format ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis[ \\\"to\\\" + item.format ]( item, function( data ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.download( data, item.mimeType, [ item.fileName, item.extension ].join( \\\".\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthrow new Error( 'Invalid format. Could not determine output type.' );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} )( item );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// HIDE EMPTY ONES\\r\\n\\t\\t\\t\\t\\t\\tif ( item.menu !== undefined && !item.menu.length ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontinue;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// ADD LINK ATTR\\r\\n\\t\\t\\t\\t\\t\\ta.setAttribute( \\\"href\\\", \\\"#\\\" );\\r\\n\\t\\t\\t\\t\\t\\ta.addEventListener( \\\"click\\\", ( function( callback, item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\treturn function( e ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar args = [ e, item ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// DELAYED\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( ( item.action == \\\"draw\\\" || item.format == \\\"PRINT\\\" || ( item.format != \\\"UNDEFINED\\\" && item.capture ) ) && !_this.drawing.enabled ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\titem.delay = item.delay ? item.delay : _this.config.delay;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( item.delay ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.delay( item, callback );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcallback.apply( _this, args );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t} )( item.click || function( e ) {\\r\\n\\t\\t\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\t\\t}, item ) );\\r\\n\\t\\t\\t\\t\\t\\tli.appendChild( a );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// ADD LABEL\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.isElement( item.label ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tspan.appendChild( item.label );\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\tspan.innerHTML = item.label;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// APPEND ITEMS\\r\\n\\t\\t\\t\\t\\t\\tif ( item[ \\\"class\\\" ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tli.className = item[ \\\"class\\\" ];\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( item.style ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tli.setAttribute( \\\"style\\\", item.style );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( item.icon ) {\\r\\n\\t\\t\\t\\t\\t\\t\\timg.setAttribute( \\\"src\\\", ( !item.ignore && item.icon.slice( 0, 10 ).indexOf( \\\"//\\\" ) == -1 ? chart.pathToImages : \\\"\\\" ) + item.icon );\\r\\n\\t\\t\\t\\t\\t\\t\\ta.appendChild( img );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( item.label ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta.appendChild( span );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( item.title ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta.setAttribute( \\\"title\\\", item.title );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// CALLBACK; REVIVER FOR MENU ITEMS\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.config.menuReviver ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tli = _this.config.menuReviver.apply( _this, [ item, li ] );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// ADD ELEMENTS FOR EASY ACCESS\\r\\n\\t\\t\\t\\t\\t\\titem.elements = {\\r\\n\\t\\t\\t\\t\\t\\t\\tli: li,\\r\\n\\t\\t\\t\\t\\t\\t\\ta: a,\\r\\n\\t\\t\\t\\t\\t\\t\\timg: img,\\r\\n\\t\\t\\t\\t\\t\\t\\tspan: span\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// ADD SUBLIST; JUST WITH ENTRIES\\r\\n\\t\\t\\t\\t\\t\\tif ( ( item.menu || item.items ) && item.action != \\\"draw\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( buildList( item.menu || item.items, li ).childNodes.length ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tul.appendChild( li );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\tul.appendChild( li );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// JUST ADD THOSE WITH ENTRIES\\r\\n\\t\\t\\t\\t\\tif ( ul.childNodes.length ) {\\r\\n\\t\\t\\t\\t\\t\\tcontainer.appendChild( ul );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\treturn ul;\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// DETERMINE CONTAINER\\r\\n\\t\\t\\t\\tif ( !container ) {\\r\\n\\t\\t\\t\\t\\tif ( typeof _this.config.divId == \\\"string\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.config.divId = container = document.getElementById( _this.config.divId );\\r\\n\\t\\t\\t\\t\\t} else if ( _this.isElement( _this.config.divId ) ) {\\r\\n\\t\\t\\t\\t\\t\\tcontainer = _this.config.divId;\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tcontainer = _this.setup.chart.containerDiv;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// CREATE / RESET MENU CONTAINER\\r\\n\\t\\t\\t\\tif ( _this.isElement( _this.setup.menu ) ) {\\r\\n\\t\\t\\t\\t\\t_this.setup.menu.innerHTML = \\\"\\\";\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t_this.setup.menu = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t_this.setup.menu.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-menu \\\" + _this.setup.chart.classNamePrefix + \\\"-export-menu-\\\" + _this.config.position + \\\" amExportButton\\\" );\\r\\n\\r\\n\\t\\t\\t\\t// CALLBACK; REPLACES THE MENU WALKER\\r\\n\\t\\t\\t\\tif ( _this.config.menuWalker ) {\\r\\n\\t\\t\\t\\t\\tbuildList = _this.config.menuWalker;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\tbuildList.apply( this, [ list, _this.setup.menu ] );\\r\\n\\r\\n\\t\\t\\t\\t// JUST ADD THOSE WITH ENTRIES\\r\\n\\t\\t\\t\\tif ( _this.setup.menu.childNodes.length ) {\\r\\n\\t\\t\\t\\t\\tcontainer.appendChild( _this.setup.menu );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\treturn _this.setup.menu;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Method to trigger the callback delayed\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tdelay: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdelay: 3,\\r\\n\\t\\t\\t\\t\\tprecision: 2\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar t1, t2, start = Number( new Date() );\\r\\n\\t\\t\\t\\tvar menu = _this.createMenu( [ {\\r\\n\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"capturing.delayed.menu.label\\\" ).replace( \\\"{{duration}}\\\", AmCharts.toFixed( cfg.delay, cfg.precision ) ),\\r\\n\\t\\t\\t\\t\\ttitle: _this.i18l( \\\"capturing.delayed.menu.title\\\" ),\\r\\n\\t\\t\\t\\t\\t\\\"class\\\": \\\"export-delayed-capturing\\\",\\r\\n\\t\\t\\t\\t\\tclick: function() {\\r\\n\\t\\t\\t\\t\\t\\tclearTimeout( t1 );\\r\\n\\t\\t\\t\\t\\t\\tclearTimeout( t2 );\\r\\n\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t} ] );\\r\\n\\t\\t\\t\\tvar label = menu.getElementsByTagName( \\\"a\\\" )[ 0 ];\\r\\n\\r\\n\\t\\t\\t\\t// MENU UPDATE\\r\\n\\t\\t\\t\\tt1 = setInterval( function() {\\r\\n\\t\\t\\t\\t\\tvar diff = cfg.delay - ( Number( new Date() ) - start ) / 1000;\\r\\n\\t\\t\\t\\t\\tif ( diff <= 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tclearTimeout( t1 );\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.action != \\\"draw\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} else if ( label ) {\\r\\n\\t\\t\\t\\t\\t\\tlabel.innerHTML = _this.i18l( \\\"capturing.delayed.menu.label\\\" ).replace( \\\"{{duration}}\\\", AmCharts.toFixed( diff, 2 ) );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}, 10 );\\r\\n\\r\\n\\t\\t\\t\\t// CALLBACK\\r\\n\\t\\t\\t\\tt2 = setTimeout( function() {\\r\\n\\t\\t\\t\\t\\tcallback.apply( _this, arguments );\\r\\n\\t\\t\\t\\t}, cfg.delay * 1000 );\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Migration method to support old export setup\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tmigrateSetup: function( setup ) {\\r\\n\\t\\t\\t\\tvar cfg = {\\r\\n\\t\\t\\t\\t\\tenabled: true,\\r\\n\\t\\t\\t\\t\\tmigrated: true,\\r\\n\\t\\t\\t\\t\\tlibs: {\\r\\n\\t\\t\\t\\t\\t\\tautoLoad: true\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tmenu: []\\r\\n\\t\\t\\t\\t};\\r\\n\\r\\n\\t\\t\\t\\tfunction crawler( object ) {\\r\\n\\t\\t\\t\\t\\tvar key;\\r\\n\\t\\t\\t\\t\\tfor ( key in object ) {\\r\\n\\t\\t\\t\\t\\t\\tvar value = object[ key ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( key.slice( 0, 6 ) == \\\"export\\\" && value ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg.menu.push( key.slice( 6 ) );\\r\\n\\t\\t\\t\\t\\t\\t} else if ( key == \\\"userCFG\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcrawler( value );\\r\\n\\t\\t\\t\\t\\t\\t} else if ( key == \\\"menuItems\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg.menu = value;\\r\\n\\t\\t\\t\\t\\t\\t} else if ( key == \\\"libs\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg.libs = value;\\r\\n\\t\\t\\t\\t\\t\\t} else if ( typeof key == \\\"string\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg[ key ] = value;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tcrawler( setup );\\r\\n\\r\\n\\t\\t\\t\\treturn cfg;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/*\\r\\n\\t\\t\\t ** Add event listener\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tloadListeners: function() {\\r\\n\\t\\t\\t\\tfunction handleClone( clone ) {\\r\\n\\t\\t\\t\\t\\tif ( clone ) {\\r\\n\\t\\t\\t\\t\\t\\tclone.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\ttop: clone.top + 10,\\r\\n\\t\\t\\t\\t\\t\\t\\tleft: clone.left + 10\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( clone );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// OBSERVE; KEY LISTENER; DRAWING FEATURES\\r\\n\\t\\t\\t\\tif ( _this.config.keyListener && _this.config.keyListener != \\\"attached\\\" ) {\\r\\n\\t\\t\\t\\t\\t_this.config.keyListener = \\\"attached\\\";\\r\\n\\t\\t\\t\\t\\tdocument.addEventListener( \\\"keydown\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\t\\tvar current = _this.drawing.buffer.target;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// REMOVE; key: BACKSPACE / DELETE\\r\\n\\t\\t\\t\\t\\t\\tif ( ( e.keyCode == 8 || e.keyCode == 46 ) && current ) {\\r\\n\\t\\t\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.remove( current );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ESCAPE DRAWIN MODE; key: escape\\r\\n\\t\\t\\t\\t\\t\\t} else if ( e.keyCode == 27 && _this.drawing.enabled ) {\\r\\n\\t\\t\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.done();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// COPY; key: C\\r\\n\\t\\t\\t\\t\\t\\t} else if ( e.keyCode == 67 && ( e.metaKey || e.ctrlKey ) && current ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.buffer.copy = current;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// CUT; key: X\\r\\n\\t\\t\\t\\t\\t\\t} else if ( e.keyCode == 88 && ( e.metaKey || e.ctrlKey ) && current ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.buffer.copy = current;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.remove( current );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// PASTE; key: V\\r\\n\\t\\t\\t\\t\\t\\t} else if ( e.keyCode == 86 && ( e.metaKey || e.ctrlKey ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( _this.drawing.buffer.copy ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\thandleClone( _this.drawing.buffer.copy.clone( handleClone ) )\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// UNDO / REDO; key: Z\\r\\n\\t\\t\\t\\t\\t\\t} else if ( e.keyCode == 90 && ( e.metaKey || e.ctrlKey ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( e.shiftKey ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.redo();\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.undo();\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// OBSERVE; DRAG AND DROP LISTENER; DRAWING FEATURE\\r\\n\\t\\t\\t\\tif ( _this.config.fileListener ) {\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.addEventListener( \\\"dragover\\\", _this.handleDropbox );\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.addEventListener( \\\"dragleave\\\", _this.handleDropbox );\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.addEventListener( \\\"drop\\\", _this.handleDropbox );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Initiate export menu; waits for chart container to place menu\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tinit: function() {\\r\\n\\t\\t\\t\\tclearTimeout( _this.timer );\\r\\n\\t\\t\\t\\t_this.timer = setInterval( function() {\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.containerDiv ) {\\r\\n\\t\\t\\t\\t\\t\\tclearTimeout( _this.timer );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.config.enabled ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t// CREATE REFERENCE\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.chart.AmExport = _this;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// OVERWRITE PARENT OVERFLOW\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( _this.config.overflow ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.chart.div.style.overflow = \\\"visible\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ATTACH EVENTS\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.loadListeners();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// CREATE MENU\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}, AmCharts.updateRate );\\r\\n\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Initiates export instance; merges given config; attaches event listener\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tconstruct: function() {\\r\\n\\t\\t\\t\\t// ANNOTATION; MAP \\\"DONE\\\"\\r\\n\\t\\t\\t\\t_this.drawing.handler.cancel = _this.drawing.handler.done;\\r\\n\\r\\n\\t\\t\\t\\t// CHECK BLOB CONSTRUCTOR\\r\\n\\t\\t\\t\\ttry {\\r\\n\\t\\t\\t\\t\\t_this.setup.hasBlob = !!new Blob;\\r\\n\\t\\t\\t\\t} catch ( e ) {}\\r\\n\\r\\n\\t\\t\\t\\t// WORK AROUND TO BYPASS FILESAVER CHECK TRYING TO OPEN THE BLOB URL IN SAFARI BROWSER\\r\\n\\t\\t\\t\\twindow.safari = window.safari ? window.safari : {};\\r\\n\\r\\n\\t\\t\\t\\t// OVERTAKE CHART FONTSIZE IF GIVEN\\r\\n\\t\\t\\t\\t_this.defaults.fabric.drawing.fontSize = _this.setup.chart.fontSize || 11;\\r\\n\\r\\n\\t\\t\\t\\t// MERGE SETTINGS\\r\\n\\t\\t\\t\\t_this.config.drawing = _this.deepMerge( _this.defaults.fabric.drawing, _this.config.drawing || {}, true );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.defaults.fabric, _this.config, true );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.defaults.fabric, _this.config.fabric || {}, true );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.defaults.pdfMake, _this.config, true );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.defaults.pdfMake, _this.config.pdfMake || {}, true );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.libs, _this.config.libs || {}, true );\\r\\n\\r\\n\\t\\t\\t\\t// UPDATE CONFIG\\r\\n\\t\\t\\t\\t_this.config.drawing = _this.defaults.fabric.drawing;\\r\\n\\t\\t\\t\\t_this.config.fabric = _this.defaults.fabric;\\r\\n\\t\\t\\t\\t_this.config.pdfMake = _this.defaults.pdfMake;\\r\\n\\t\\t\\t\\t_this.config = _this.deepMerge( _this.defaults, _this.config, true );\\r\\n\\r\\n\\t\\t\\t\\t// MERGE; SETUP DRAWING MENU\\r\\n\\t\\t\\t\\tif ( _this.config.fabric.drawing.enabled ) {\\r\\n\\t\\t\\t\\t\\tif ( _this.config.fabric.drawing.menu === undefined ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.config.fabric.drawing.menu = [];\\r\\n\\t\\t\\t\\t\\t\\t_this.deepMerge( _this.config.fabric.drawing.menu, [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\\"class\\\": \\\"export-drawing\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\tmenu: [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.add\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.shapes\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw.shapes\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.text\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"text\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} ]\\r\\n\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.change\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.modes\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw.modes\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.colors\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw.colors\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.widths\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw.widths\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.opacities\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw.opacities\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, \\\"UNDO\\\", \\\"REDO\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.save.image\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: [ \\\"PNG\\\", \\\"JPG\\\", \\\"SVG\\\", \\\"PDF\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t}, \\\"PRINT\\\", \\\"CANCEL\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t} ] );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// MERGE; SETUP MAIN MENU\\r\\n\\t\\t\\t\\tif ( _this.config.menu === undefined ) {\\r\\n\\t\\t\\t\\t\\t_this.config.menu = [];\\r\\n\\t\\t\\t\\t\\t// PARENT MENU\\r\\n\\t\\t\\t\\t\\t_this.deepMerge( _this.config, {\\r\\n\\t\\t\\t\\t\\t\\tmenu: [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\\"class\\\": \\\"export-main\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\tmenu: [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.save.image\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: [ \\\"PNG\\\", \\\"JPG\\\", \\\"SVG\\\", \\\"PDF\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.save.data\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: [ \\\"CSV\\\", \\\"XLSX\\\", \\\"JSON\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: _this.config.fabric.drawing.menu\\r\\n\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: \\\"PRINT\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.print\\\" )\\r\\n\\t\\t\\t\\t\\t\\t\\t} ]\\r\\n\\t\\t\\t\\t\\t\\t} ]\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// ADD MISSING PATH\\r\\n\\t\\t\\t\\tif ( !_this.libs.path ) {\\r\\n\\t\\t\\t\\t\\t_this.libs.path = _this.config.path + \\\"libs/\\\";\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// CHECK ACCEPTANCE\\r\\n\\t\\t\\t\\tif ( _this.isSupported() ) {\\r\\n\\t\\t\\t\\t\\t// LOAD DEPENDENCIES\\r\\n\\t\\t\\t\\t\\t_this.loadDependencies( _this.libs.resources, _this.libs.reload );\\r\\n\\t\\t\\t\\t\\t// ADD CLASSNAMES\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.addClassNames = true;\\r\\n\\t\\t\\t\\t\\t// REFERENCE\\r\\n\\t\\t\\t\\t\\t_this.setup.chart[ _this.name ] = _this;\\r\\n\\t\\t\\t\\t\\t// INIT MENU; WAIT FOR CHART INSTANCE\\r\\n\\t\\t\\t\\t\\t_this.init();\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\t// USE GIVEN CONFIG\\r\\n\\t\\tif ( config ) {\\r\\n\\t\\t\\t_this.config = config;\\r\\n\\r\\n\\t\\t\\t// USE CHART EXPORT CONFIG\\r\\n\\t\\t} else if ( _this.setup.chart[ _this.name ] ) {\\r\\n\\t\\t\\t_this.config = _this.setup.chart[ _this.name ];\\r\\n\\r\\n\\t\\t\\t// MIGRATE OLD EXPORT CHART CONFIG\\r\\n\\t\\t} else if ( _this.setup.chart.amExport || _this.setup.chart.exportConfig ) {\\r\\n\\t\\t\\t_this.config = _this.migrateSetup( _this.setup.chart.amExport || _this.setup.chart.exportConfig );\\r\\n\\r\\n\\t\\t\\t// EXIT; NO CONFIG\\r\\n\\t\\t} else {\\r\\n\\t\\t\\treturn;\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\t// CONSTRUCT INSTANCE\\r\\n\\t\\t_this.construct();\\r\\n\\r\\n\\t\\t// EXPORT SCOPE\\r\\n\\t\\treturn _this.deepMerge( this, _this );\\r\\n\\t}\\r\\n} )();\\r\\n\\r\\n/**\\r\\n * Set init handler\\r\\n */\\r\\nAmCharts.addInitHandler( function( chart ) {\\r\\n\\tnew AmCharts[ \\\"export\\\" ]( chart );\\r\\n\\r\\n}, [ \\\"pie\\\", \\\"serial\\\", \\\"xy\\\", \\\"funnel\\\", \\\"radar\\\", \\\"gauge\\\", \\\"stock\\\", \\\"map\\\", \\\"gantt\\\" ] );\"\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(19)(__webpack_require__(32))\n\n/***/ },\n/* 32 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"/*!\\n * Bootstrap v3.3.6 (http://getbootstrap.com)\\n * Copyright 2011-2015 Twitter, Inc.\\n * Licensed under the MIT license\\n */\\nif(\\\"undefined\\\"==typeof jQuery)throw new Error(\\\"Bootstrap's JavaScript requires jQuery\\\");+function(a){\\\"use strict\\\";var b=a.fn.jquery.split(\\\" \\\")[0].split(\\\".\\\");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error(\\\"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3\\\")}(jQuery),+function(a){\\\"use strict\\\";function b(){var a=document.createElement(\\\"bootstrap\\\"),b={WebkitTransition:\\\"webkitTransitionEnd\\\",MozTransition:\\\"transitionend\\\",OTransition:\\\"oTransitionEnd otransitionend\\\",transition:\\\"transitionend\\\"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(\\\"bsTransitionEnd\\\",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){\\\"use strict\\\";function b(b){return this.each(function(){var c=a(this),e=c.data(\\\"bs.alert\\\");e||c.data(\\\"bs.alert\\\",e=new d(this)),\\\"string\\\"==typeof b&&e[b].call(c)})}var c='[data-dismiss=\\\"alert\\\"]',d=function(b){a(b).on(\\\"click\\\",c,this.close)};d.VERSION=\\\"3.3.6\\\",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger(\\\"closed.bs.alert\\\").remove()}var e=a(this),f=e.attr(\\\"data-target\\\");f||(f=e.attr(\\\"href\\\"),f=f&&f.replace(/.*(?=#[^\\\\s]*$)/,\\\"\\\"));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(\\\".alert\\\")),g.trigger(b=a.Event(\\\"close.bs.alert\\\")),b.isDefaultPrevented()||(g.removeClass(\\\"in\\\"),a.support.transition&&g.hasClass(\\\"fade\\\")?g.one(\\\"bsTransitionEnd\\\",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on(\\\"click.bs.alert.data-api\\\",c,d.prototype.close)}(jQuery),+function(a){\\\"use strict\\\";function b(b){return this.each(function(){var d=a(this),e=d.data(\\\"bs.button\\\"),f=\\\"object\\\"==typeof b&&b;e||d.data(\\\"bs.button\\\",e=new c(this,f)),\\\"toggle\\\"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION=\\\"3.3.6\\\",c.DEFAULTS={loadingText:\\\"loading...\\\"},c.prototype.setState=function(b){var c=\\\"disabled\\\",d=this.$element,e=d.is(\\\"input\\\")?\\\"val\\\":\\\"html\\\",f=d.data();b+=\\\"Text\\\",null==f.resetText&&d.data(\\\"resetText\\\",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),\\\"loadingText\\\"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle=\\\"buttons\\\"]');if(b.length){var c=this.$element.find(\\\"input\\\");\\\"radio\\\"==c.prop(\\\"type\\\")?(c.prop(\\\"checked\\\")&&(a=!1),b.find(\\\".active\\\").removeClass(\\\"active\\\"),this.$element.addClass(\\\"active\\\")):\\\"checkbox\\\"==c.prop(\\\"type\\\")&&(c.prop(\\\"checked\\\")!==this.$element.hasClass(\\\"active\\\")&&(a=!1),this.$element.toggleClass(\\\"active\\\")),c.prop(\\\"checked\\\",this.$element.hasClass(\\\"active\\\")),a&&c.trigger(\\\"change\\\")}else this.$element.attr(\\\"aria-pressed\\\",!this.$element.hasClass(\\\"active\\\")),this.$element.toggleClass(\\\"active\\\")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on(\\\"click.bs.button.data-api\\\",'[data-toggle^=\\\"button\\\"]',function(c){var d=a(c.target);d.hasClass(\\\"btn\\\")||(d=d.closest(\\\".btn\\\")),b.call(d,\\\"toggle\\\"),a(c.target).is('input[type=\\\"radio\\\"]')||a(c.target).is('input[type=\\\"checkbox\\\"]')||c.preventDefault()}).on(\\\"focus.bs.button.data-api blur.bs.button.data-api\\\",'[data-toggle^=\\\"button\\\"]',function(b){a(b.target).closest(\\\".btn\\\").toggleClass(\\\"focus\\\",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){\\\"use strict\\\";function b(b){return this.each(function(){var d=a(this),e=d.data(\\\"bs.carousel\\\"),f=a.extend({},c.DEFAULTS,d.data(),\\\"object\\\"==typeof b&&b),g=\\\"string\\\"==typeof b?b:f.slide;e||d.data(\\\"bs.carousel\\\",e=new c(this,f)),\\\"number\\\"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(\\\".carousel-indicators\\\"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on(\\\"keydown.bs.carousel\\\",a.proxy(this.keydown,this)),\\\"hover\\\"==this.options.pause&&!(\\\"ontouchstart\\\"in document.documentElement)&&this.$element.on(\\\"mouseenter.bs.carousel\\\",a.proxy(this.pause,this)).on(\\\"mouseleave.bs.carousel\\\",a.proxy(this.cycle,this))};c.VERSION=\\\"3.3.6\\\",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:\\\"hover\\\",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(\\\".item\\\"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d=\\\"prev\\\"==a&&0===c||\\\"next\\\"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e=\\\"prev\\\"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(\\\".item.active\\\"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one(\\\"slid.bs.carousel\\\",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?\\\"next\\\":\\\"prev\\\",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(\\\".next, .prev\\\").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide(\\\"next\\\")},c.prototype.prev=function(){return this.sliding?void 0:this.slide(\\\"prev\\\")},c.prototype.slide=function(b,d){var e=this.$element.find(\\\".item.active\\\"),f=d||this.getItemForDirection(b,e),g=this.interval,h=\\\"next\\\"==b?\\\"left\\\":\\\"right\\\",i=this;if(f.hasClass(\\\"active\\\"))return this.sliding=!1;var j=f[0],k=a.Event(\\\"slide.bs.carousel\\\",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(\\\".active\\\").removeClass(\\\"active\\\");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass(\\\"active\\\")}var m=a.Event(\\\"slid.bs.carousel\\\",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass(\\\"slide\\\")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one(\\\"bsTransitionEnd\\\",function(){f.removeClass([b,h].join(\\\" \\\")).addClass(\\\"active\\\"),e.removeClass([\\\"active\\\",h].join(\\\" \\\")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass(\\\"active\\\"),f.addClass(\\\"active\\\"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr(\\\"data-target\\\")||(d=e.attr(\\\"href\\\"))&&d.replace(/.*(?=#[^\\\\s]+$)/,\\\"\\\"));if(f.hasClass(\\\"carousel\\\")){var g=a.extend({},f.data(),e.data()),h=e.attr(\\\"data-slide-to\\\");h&&(g.interval=!1),b.call(f,g),h&&f.data(\\\"bs.carousel\\\").to(h),c.preventDefault()}};a(document).on(\\\"click.bs.carousel.data-api\\\",\\\"[data-slide]\\\",e).on(\\\"click.bs.carousel.data-api\\\",\\\"[data-slide-to]\\\",e),a(window).on(\\\"load\\\",function(){a('[data-ride=\\\"carousel\\\"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){\\\"use strict\\\";function b(b){var c,d=b.attr(\\\"data-target\\\")||(c=b.attr(\\\"href\\\"))&&c.replace(/.*(?=#[^\\\\s]+$)/,\\\"\\\");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data(\\\"bs.collapse\\\"),f=a.extend({},d.DEFAULTS,c.data(),\\\"object\\\"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data(\\\"bs.collapse\\\",e=new d(this,f)),\\\"string\\\"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle=\\\"collapse\\\"][href=\\\"#'+b.id+'\\\"],[data-toggle=\\\"collapse\\\"][data-target=\\\"#'+b.id+'\\\"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION=\\\"3.3.6\\\",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass(\\\"width\\\");return a?\\\"width\\\":\\\"height\\\"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass(\\\"in\\\")){var b,e=this.$parent&&this.$parent.children(\\\".panel\\\").children(\\\".in, .collapsing\\\");if(!(e&&e.length&&(b=e.data(\\\"bs.collapse\\\"),b&&b.transitioning))){var f=a.Event(\\\"show.bs.collapse\\\");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,\\\"hide\\\"),b||e.data(\\\"bs.collapse\\\",null));var g=this.dimension();this.$element.removeClass(\\\"collapse\\\").addClass(\\\"collapsing\\\")[g](0).attr(\\\"aria-expanded\\\",!0),this.$trigger.removeClass(\\\"collapsed\\\").attr(\\\"aria-expanded\\\",!0),this.transitioning=1;var h=function(){this.$element.removeClass(\\\"collapsing\\\").addClass(\\\"collapse in\\\")[g](\\\"\\\"),this.transitioning=0,this.$element.trigger(\\\"shown.bs.collapse\\\")};if(!a.support.transition)return h.call(this);var i=a.camelCase([\\\"scroll\\\",g].join(\\\"-\\\"));this.$element.one(\\\"bsTransitionEnd\\\",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass(\\\"in\\\")){var b=a.Event(\\\"hide.bs.collapse\\\");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass(\\\"collapsing\\\").removeClass(\\\"collapse in\\\").attr(\\\"aria-expanded\\\",!1),this.$trigger.addClass(\\\"collapsed\\\").attr(\\\"aria-expanded\\\",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass(\\\"collapsing\\\").addClass(\\\"collapse\\\").trigger(\\\"hidden.bs.collapse\\\")};return a.support.transition?void this.$element[c](0).one(\\\"bsTransitionEnd\\\",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass(\\\"in\\\")?\\\"hide\\\":\\\"show\\\"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle=\\\"collapse\\\"][data-parent=\\\"'+this.options.parent+'\\\"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass(\\\"in\\\");a.attr(\\\"aria-expanded\\\",c),b.toggleClass(\\\"collapsed\\\",!c).attr(\\\"aria-expanded\\\",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on(\\\"click.bs.collapse.data-api\\\",'[data-toggle=\\\"collapse\\\"]',function(d){var e=a(this);e.attr(\\\"data-target\\\")||d.preventDefault();var f=b(e),g=f.data(\\\"bs.collapse\\\"),h=g?\\\"toggle\\\":e.data();c.call(f,h)})}(jQuery),+function(a){\\\"use strict\\\";function b(b){var c=b.attr(\\\"data-target\\\");c||(c=b.attr(\\\"href\\\"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\\\\s]*$)/,\\\"\\\"));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass(\\\"open\\\")&&(c&&\\\"click\\\"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event(\\\"hide.bs.dropdown\\\",f)),c.isDefaultPrevented()||(d.attr(\\\"aria-expanded\\\",\\\"false\\\"),e.removeClass(\\\"open\\\").trigger(a.Event(\\\"hidden.bs.dropdown\\\",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data(\\\"bs.dropdown\\\");d||c.data(\\\"bs.dropdown\\\",d=new g(this)),\\\"string\\\"==typeof b&&d[b].call(c)})}var e=\\\".dropdown-backdrop\\\",f='[data-toggle=\\\"dropdown\\\"]',g=function(b){a(b).on(\\\"click.bs.dropdown\\\",this.toggle)};g.VERSION=\\\"3.3.6\\\",g.prototype.toggle=function(d){var e=a(this);if(!e.is(\\\".disabled, :disabled\\\")){var f=b(e),g=f.hasClass(\\\"open\\\");if(c(),!g){\\\"ontouchstart\\\"in document.documentElement&&!f.closest(\\\".navbar-nav\\\").length&&a(document.createElement(\\\"div\\\")).addClass(\\\"dropdown-backdrop\\\").insertAfter(a(this)).on(\\\"click\\\",c);var h={relatedTarget:this};if(f.trigger(d=a.Event(\\\"show.bs.dropdown\\\",h)),d.isDefaultPrevented())return;e.trigger(\\\"focus\\\").attr(\\\"aria-expanded\\\",\\\"true\\\"),f.toggleClass(\\\"open\\\").trigger(a.Event(\\\"shown.bs.dropdown\\\",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(\\\".disabled, :disabled\\\")){var e=b(d),g=e.hasClass(\\\"open\\\");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger(\\\"focus\\\"),d.trigger(\\\"click\\\");var h=\\\" li:not(.disabled):visible a\\\",i=e.find(\\\".dropdown-menu\\\"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:\\\"\\\",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:\\\"\\\"})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:\\\"\\\",paddingRight:\\\"\\\"})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:\\\"hover focus\\\",title:\\\"\\\",delay:0,html:!1,container:!1,viewport:{selector:\\\"body\\\",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error(\\\"`selector` option must be specified when initializing \\\"+this.type+\\\" on the window.document object!\\\");for(var e=this.options.trigger.split(\\\" \\\"),f=e.length;f--;){var g=e[f];if(\\\"click\\\"==g)this.$element.on(\\\"click.\\\"+this.type,this.options.selector,a.proxy(this.toggle,this));else if(\\\"manual\\\"!=g){var h=\\\"hover\\\"==g?\\\"mouseenter\\\":\\\"focusin\\\",i=\\\"hover\\\"==g?\\\"mouseleave\\\":\\\"focusout\\\";this.$element.on(h+\\\".\\\"+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+\\\".\\\"+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:\\\"manual\\\",selector:\\\"\\\"}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&\\\"number\\\"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\\\"bs.\\\"+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\\\"bs.\\\"+this.type,c)),b instanceof a.Event&&(c.inState[\\\"focusin\\\"==b.type?\\\"focus\\\":\\\"hover\\\"]=!0),c.tip().hasClass(\\\"in\\\")||\\\"in\\\"==c.hoverState?void(c.hoverState=\\\"in\\\"):(clearTimeout(c.timeout),c.hoverState=\\\"in\\\",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){\\\"in\\\"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\\\"bs.\\\"+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\\\"bs.\\\"+this.type,c)),b instanceof a.Event&&(c.inState[\\\"focusout\\\"==b.type?\\\"focus\\\":\\\"hover\\\"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState=\\\"out\\\",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){\\\"out\\\"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event(\\\"show.bs.\\\"+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr(\\\"id\\\",g),this.$element.attr(\\\"aria-describedby\\\",g),this.options.animation&&f.addClass(\\\"fade\\\");var h=\\\"function\\\"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\\\\s?auto?\\\\s?/i,j=i.test(h);j&&(h=h.replace(i,\\\"\\\")||\\\"top\\\"),f.detach().css({top:0,left:0,display:\\\"block\\\"}).addClass(h).data(\\\"bs.\\\"+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger(\\\"inserted.bs.\\\"+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h=\\\"bottom\\\"==h&&k.bottom+m>o.bottom?\\\"top\\\":\\\"top\\\"==h&&k.top-mo.width?\\\"left\\\":\\\"left\\\"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr(\\\"data-original-title\\\")||(\\\"function\\\"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+\\\" `template` option must consist of exactly 1 top-level element!\\\");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\\\".tooltip-arrow\\\")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data(\\\"bs.\\\"+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\\\"bs.\\\"+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass(\\\"in\\\")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off(\\\".\\\"+a.type).removeData(\\\"bs.\\\"+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){\\\"use strict\\\";function b(b){return this.each(function(){var d=a(this),e=d.data(\\\"bs.popover\\\"),f=\\\"object\\\"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data(\\\"bs.popover\\\",e=new c(this,f)),\\\"string\\\"==typeof b&&e[b]())})}var c=function(a,b){this.init(\\\"popover\\\",a,b)};if(!a.fn.tooltip)throw new Error(\\\"Popover requires tooltip.js\\\");c.VERSION=\\\"3.3.6\\\",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:\\\"right\\\",trigger:\\\"click\\\",content:\\\"\\\",template:'

'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(\\\".popover-title\\\")[this.options.html?\\\"html\\\":\\\"text\\\"](b),a.find(\\\".popover-content\\\").children().detach().end()[this.options.html?\\\"string\\\"==typeof c?\\\"html\\\":\\\"append\\\":\\\"text\\\"](c),a.removeClass(\\\"fade top bottom left right in\\\"),a.find(\\\".popover-title\\\").html()||a.find(\\\".popover-title\\\").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr(\\\"data-content\\\")||(\\\"function\\\"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\\\".arrow\\\")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){\\\"use strict\\\";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||\\\"\\\")+\\\" .nav li > a\\\",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on(\\\"scroll.bs.scrollspy\\\",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data(\\\"bs.scrollspy\\\"),f=\\\"object\\\"==typeof c&&c;e||d.data(\\\"bs.scrollspy\\\",e=new b(this,f)),\\\"string\\\"==typeof c&&e[c]()})}b.VERSION=\\\"3.3.6\\\",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c=\\\"offset\\\",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c=\\\"position\\\",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data(\\\"target\\\")||b.attr(\\\"href\\\"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(\\\":visible\\\")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active\\\").removeClass(\\\"active\\\").end().find('[data-toggle=\\\"tab\\\"]').attr(\\\"aria-expanded\\\",!1),b.addClass(\\\"active\\\").find('[data-toggle=\\\"tab\\\"]').attr(\\\"aria-expanded\\\",!0),h?(b[0].offsetWidth,b.addClass(\\\"in\\\")):b.removeClass(\\\"fade\\\"),b.parent(\\\".dropdown-menu\\\").length&&b.closest(\\\"li.dropdown\\\").addClass(\\\"active\\\").end().find('[data-toggle=\\\"tab\\\"]').attr(\\\"aria-expanded\\\",!0),e&&e()}var g=d.find(\\\"> .active\\\"),h=e&&a.support.transition&&(g.length&&g.hasClass(\\\"fade\\\")||!!d.find(\\\"> .fade\\\").length);g.length&&h?g.one(\\\"bsTransitionEnd\\\",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass(\\\"in\\\")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),\\\"show\\\")};a(document).on(\\\"click.bs.tab.data-api\\\",'[data-toggle=\\\"tab\\\"]',e).on(\\\"click.bs.tab.data-api\\\",'[data-toggle=\\\"pill\\\"]',e)}(jQuery),+function(a){\\\"use strict\\\";function b(b){return this.each(function(){var d=a(this),e=d.data(\\\"bs.affix\\\"),f=\\\"object\\\"==typeof b&&b;e||d.data(\\\"bs.affix\\\",e=new c(this,f)),\\\"string\\\"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on(\\\"scroll.bs.affix.data-api\\\",a.proxy(this.checkPosition,this)).on(\\\"click.bs.affix.data-api\\\",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION=\\\"3.3.6\\\",c.RESET=\\\"affix affix-top affix-bottom\\\",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&\\\"top\\\"==this.affixed)return c>e?\\\"top\\\":!1;if(\\\"bottom\\\"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:\\\"bottom\\\":a-d>=e+g?!1:\\\"bottom\\\";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?\\\"top\\\":null!=d&&i+j>=a-d?\\\"bottom\\\":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass(\\\"affix\\\");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(\\\":visible\\\")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());\\\"object\\\"!=typeof d&&(f=e=d),\\\"function\\\"==typeof e&&(e=d.top(this.$element)),\\\"function\\\"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css(\\\"top\\\",\\\"\\\");var i=\\\"affix\\\"+(h?\\\"-\\\"+h:\\\"\\\"),j=a.Event(i+\\\".bs.affix\\\");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin=\\\"bottom\\\"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace(\\\"affix\\\",\\\"affixed\\\")+\\\".bs.affix\\\")}\\\"bottom\\\"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on(\\\"load\\\",function(){a('[data-spy=\\\"affix\\\"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);\"\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(19)(__webpack_require__(34))\n\n/***/ },\n/* 34 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"//! moment.js\\n//! version : 2.11.1\\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\\n//! license : MIT\\n//! momentjs.com\\n!function(a,b){\\\"object\\\"==typeof exports&&\\\"undefined\\\"!=typeof module?module.exports=b():\\\"function\\\"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){\\\"use strict\\\";function a(){return Uc.apply(null,arguments)}function b(a){Uc=a}function c(a){return\\\"[object Array]\\\"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||\\\"[object Date]\\\"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c0)for(c in Wc)d=Wc[c],e=b[d],m(e)||(a[d]=e);return a}function o(b){n(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),Xc===!1&&(Xc=!0,a.updateOffset(this),Xc=!1)}function p(a){return a instanceof o||null!=a&&null!=a._isAMomentObject}function q(a){return 0>a?Math.ceil(a):Math.floor(a)}function r(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=q(b)),c}function s(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&r(a[d])!==r(b[d]))&&g++;return g+f}function t(){}function u(a){return a?a.toLowerCase().replace(\\\"_\\\",\\\"-\\\"):a}function v(a){for(var b,c,d,e,f=0;f0;){if(d=w(e.slice(0,b).join(\\\"-\\\")))return d;if(c&&c.length>=b&&s(e,c,!0)>=b-1)break;b--}f++}return null}function w(a){var b=null;if(!Yc[a]&&\\\"undefined\\\"!=typeof module&&module&&module.exports)try{b=Vc._abbr,require(\\\"./locale/\\\"+a),x(b)}catch(c){}return Yc[a]}function x(a,b){var c;return a&&(c=m(b)?z(a):y(a,b),c&&(Vc=c)),Vc._abbr}function y(a,b){return null!==b?(b.abbr=a,Yc[a]=Yc[a]||new t,Yc[a].set(b),x(a),Yc[a]):(delete Yc[a],null)}function z(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Vc;if(!c(a)){if(b=w(a))return b;a=[a]}return v(a)}function A(a,b){var c=a.toLowerCase();Zc[c]=Zc[c+\\\"s\\\"]=Zc[b]=a}function B(a){return\\\"string\\\"==typeof a?Zc[a]||Zc[a.toLowerCase()]:void 0}function C(a){var b,c,d={};for(c in a)f(a,c)&&(b=B(c),b&&(d[b]=a[c]));return d}function D(a){return a instanceof Function||\\\"[object Function]\\\"===Object.prototype.toString.call(a)}function E(b,c){return function(d){return null!=d?(G(this,b,d),a.updateOffset(this,c),this):F(this,b)}}function F(a,b){return a.isValid()?a._d[\\\"get\\\"+(a._isUTC?\\\"UTC\\\":\\\"\\\")+b]():NaN}function G(a,b,c){a.isValid()&&a._d[\\\"set\\\"+(a._isUTC?\\\"UTC\\\":\\\"\\\")+b](c)}function H(a,b){var c;if(\\\"object\\\"==typeof a)for(c in a)this.set(c,a[c]);else if(a=B(a),D(this[a]))return this[a](b);return this}function I(a,b,c){var d=\\\"\\\"+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?\\\"+\\\":\\\"\\\":\\\"-\\\")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function J(a,b,c,d){var e=d;\\\"string\\\"==typeof d&&(e=function(){return this[d]()}),a&&(bd[a]=e),b&&(bd[b[0]]=function(){return I(e.apply(this,arguments),b[1],b[2])}),c&&(bd[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function K(a){return a.match(/\\\\[[\\\\s\\\\S]/)?a.replace(/^\\\\[|\\\\]$/g,\\\"\\\"):a.replace(/\\\\\\\\/g,\\\"\\\")}function L(a){var b,c,d=a.match($c);for(b=0,c=d.length;c>b;b++)bd[d[b]]?d[b]=bd[d[b]]:d[b]=K(d[b]);return function(e){var f=\\\"\\\";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function M(a,b){return a.isValid()?(b=N(b,a.localeData()),ad[b]=ad[b]||L(b),ad[b](a)):a.localeData().invalidDate()}function N(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(_c.lastIndex=0;d>=0&&_c.test(a);)a=a.replace(_c,c),_c.lastIndex=0,d-=1;return a}function O(a,b,c){td[a]=D(b)?b:function(a,d){return a&&c?c:b}}function P(a,b){return f(td,a)?td[a](b._strict,b._locale):new RegExp(Q(a))}function Q(a){return R(a.replace(\\\"\\\\\\\\\\\",\\\"\\\").replace(/\\\\\\\\(\\\\[)|\\\\\\\\(\\\\])|\\\\[([^\\\\]\\\\[]*)\\\\]|\\\\\\\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function R(a){return a.replace(/[-\\\\/\\\\\\\\^$*+?.()|[\\\\]{}]/g,\\\"\\\\\\\\$&\\\")}function S(a,b){var c,d=b;for(\\\"string\\\"==typeof a&&(a=[a]),\\\"number\\\"==typeof b&&(d=function(a,c){c[b]=r(a)}),c=0;cd;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp(\\\"^\\\"+this.months(e,\\\"\\\").replace(\\\".\\\",\\\"\\\")+\\\"$\\\",\\\"i\\\"),this._shortMonthsParse[d]=new RegExp(\\\"^\\\"+this.monthsShort(e,\\\"\\\").replace(\\\".\\\",\\\"\\\")+\\\"$\\\",\\\"i\\\")),c||this._monthsParse[d]||(f=\\\"^\\\"+this.months(e,\\\"\\\")+\\\"|^\\\"+this.monthsShort(e,\\\"\\\"),this._monthsParse[d]=new RegExp(f.replace(\\\".\\\",\\\"\\\"),\\\"i\\\")),c&&\\\"MMMM\\\"===b&&this._longMonthsParse[d].test(a))return d;if(c&&\\\"MMM\\\"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function Z(a,b){var c;return a.isValid()?\\\"string\\\"==typeof b&&(b=a.localeData().monthsParse(b),\\\"number\\\"!=typeof b)?a:(c=Math.min(a.date(),V(a.year(),b)),a._d[\\\"set\\\"+(a._isUTC?\\\"UTC\\\":\\\"\\\")+\\\"Month\\\"](b,c),a):a}function $(b){return null!=b?(Z(this,b),a.updateOffset(this,!0),this):F(this,\\\"Month\\\")}function _(){return V(this.year(),this.month())}function aa(a){return this._monthsParseExact?(f(this,\\\"_monthsRegex\\\")||ca.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex}function ba(a){return this._monthsParseExact?(f(this,\\\"_monthsRegex\\\")||ca.call(this),a?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex}function ca(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=h([2e3,b]),d.push(this.monthsShort(c,\\\"\\\")),e.push(this.months(c,\\\"\\\")),f.push(this.months(c,\\\"\\\")),f.push(this.monthsShort(c,\\\"\\\"));for(d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=R(d[b]),e[b]=R(e[b]),f[b]=R(f[b]);this._monthsRegex=new RegExp(\\\"^(\\\"+f.join(\\\"|\\\")+\\\")\\\",\\\"i\\\"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(\\\"^(\\\"+e.join(\\\"|\\\")+\\\")$\\\",\\\"i\\\"),this._monthsShortStrictRegex=new RegExp(\\\"^(\\\"+d.join(\\\"|\\\")+\\\")$\\\",\\\"i\\\")}function da(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[wd]<0||c[wd]>11?wd:c[xd]<1||c[xd]>V(c[vd],c[wd])?xd:c[yd]<0||c[yd]>24||24===c[yd]&&(0!==c[zd]||0!==c[Ad]||0!==c[Bd])?yd:c[zd]<0||c[zd]>59?zd:c[Ad]<0||c[Ad]>59?Ad:c[Bd]<0||c[Bd]>999?Bd:-1,j(a)._overflowDayOfYear&&(vd>b||b>xd)&&(b=xd),j(a)._overflowWeeks&&-1===b&&(b=Cd),j(a)._overflowWeekday&&-1===b&&(b=Dd),j(a).overflow=b),a}function ea(b){a.suppressDeprecationWarnings===!1&&\\\"undefined\\\"!=typeof console&&console.warn&&console.warn(\\\"Deprecation warning: \\\"+b)}function fa(a,b){var c=!0;return g(function(){return c&&(ea(a+\\\"\\\\nArguments: \\\"+Array.prototype.slice.call(arguments).join(\\\", \\\")+\\\"\\\\n\\\"+(new Error).stack),c=!1),b.apply(this,arguments)},b)}function ga(a,b){Jd[a]||(ea(b),Jd[a]=!0)}function ha(a){var b,c,d,e,f,g,h=a._i,i=Kd.exec(h)||Ld.exec(h);if(i){for(j(a).iso=!0,b=0,c=Nd.length;c>b;b++)if(Nd[b][1].exec(i[1])){e=Nd[b][0],d=Nd[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Od.length;c>b;b++)if(Od[b][1].exec(i[3])){f=(i[2]||\\\" \\\")+Od[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Md.exec(i[4]))return void(a._isValid=!1);g=\\\"Z\\\"}a._f=e+(f||\\\"\\\")+(g||\\\"\\\"),wa(a)}else a._isValid=!1}function ia(b){var c=Pd.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(ha(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function ja(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 100>a&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ka(a){var b=new Date(Date.UTC.apply(null,arguments));return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function la(a){return ma(a)?366:365}function ma(a){return a%4===0&&a%100!==0||a%400===0}function na(){return ma(this.year())}function oa(a,b,c){var d=7+b-c,e=(7+ka(a,0,d).getUTCDay()-b)%7;return-e+d-1}function pa(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=oa(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=la(f)+j):j>la(a)?(f=a+1,g=j-la(a)):(f=a,g=j),{year:f,dayOfYear:g}}function qa(a,b,c){var d,e,f=oa(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+ra(e,b,c)):g>ra(a.year(),b,c)?(d=g-ra(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function ra(a,b,c){var d=oa(a,b,c),e=oa(a+1,b,c);return(la(a)-d+e)/7}function sa(a,b,c){return null!=a?a:null!=b?b:c}function ta(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function ua(a){var b,c,d,e,f=[];if(!a._d){for(d=ta(a),a._w&&null==a._a[xd]&&null==a._a[wd]&&va(a),a._dayOfYear&&(e=sa(a._a[vd],d[vd]),a._dayOfYear>la(e)&&(j(a)._overflowDayOfYear=!0),c=ka(e,0,a._dayOfYear),a._a[wd]=c.getUTCMonth(),a._a[xd]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[yd]&&0===a._a[zd]&&0===a._a[Ad]&&0===a._a[Bd]&&(a._nextDay=!0,a._a[yd]=0),a._d=(a._useUTC?ka:ja).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[yd]=24)}}function va(a){var b,c,d,e,f,g,h,i;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=sa(b.GG,a._a[vd],qa(Ea(),1,4).year),d=sa(b.W,1),e=sa(b.E,1),(1>e||e>7)&&(i=!0)):(f=a._locale._week.dow,g=a._locale._week.doy,c=sa(b.gg,a._a[vd],qa(Ea(),f,g).year),d=sa(b.w,1),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f),1>d||d>ra(c,f,g)?j(a)._overflowWeeks=!0:null!=i?j(a)._overflowWeekday=!0:(h=pa(c,d,e,f,g),a._a[vd]=h.year,a._dayOfYear=h.dayOfYear)}function wa(b){if(b._f===a.ISO_8601)return void ha(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=\\\"\\\"+b._i,i=h.length,k=0;for(e=N(b._f,b._locale).match($c)||[],c=0;c0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),bd[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),U(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[yd]<=12&&b._a[yd]>0&&(j(b).bigHour=void 0),b._a[yd]=xa(b._locale,b._a[yd],b._meridiem),ua(b),da(b)}function xa(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function ya(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;ef)&&(d=f,c=b));g(a,c||b)}function za(a){if(!a._d){var b=C(a._i);a._a=e([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),ua(a)}}function Aa(a){var b=new o(da(Ba(a)));return b._nextDay&&(b.add(1,\\\"d\\\"),b._nextDay=void 0),b}function Ba(a){var b=a._i,e=a._f;return a._locale=a._locale||z(a._l),null===b||void 0===e&&\\\"\\\"===b?l({nullInput:!0}):(\\\"string\\\"==typeof b&&(a._i=b=a._locale.preparse(b)),p(b)?new o(da(b)):(c(e)?ya(a):e?wa(a):d(b)?a._d=b:Ca(a),k(a)||(a._d=null),a))}function Ca(b){var f=b._i;void 0===f?b._d=new Date(a.now()):d(f)?b._d=new Date(+f):\\\"string\\\"==typeof f?ia(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),ua(b)):\\\"object\\\"==typeof f?za(b):\\\"number\\\"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Da(a,b,c,d,e){var f={};return\\\"boolean\\\"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,Aa(f)}function Ea(a,b,c,d){return Da(a,b,c,d,!1)}function Fa(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Ea();for(d=b[0],e=1;ea&&(a=-a,c=\\\"-\\\"),c+I(~~(a/60),2)+b+I(~~a%60,2)})}function La(a,b){var c=(b||\\\"\\\").match(a)||[],d=c[c.length-1]||[],e=(d+\\\"\\\").match(Ud)||[\\\"-\\\",0,0],f=+(60*e[1])+r(e[2]);return\\\"+\\\"===e[0]?f:-f}function Ma(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(p(b)||d(b)?+b:+Ea(b))-+e,e._d.setTime(+e._d+f),a.updateOffset(e,!1),e):Ea(b).local()}function Na(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Oa(b,c){var d,e=this._offset||0;return this.isValid()?null!=b?(\\\"string\\\"==typeof b?b=La(qd,b):Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Na(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,\\\"m\\\"),e!==b&&(!c||this._changeInProgress?cb(this,Za(b-e,\\\"m\\\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Na(this):null!=b?this:NaN}function Pa(a,b){return null!=a?(\\\"string\\\"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Qa(a){return this.utcOffset(0,a)}function Ra(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Na(this),\\\"m\\\")),this}function Sa(){return this._tzm?this.utcOffset(this._tzm):\\\"string\\\"==typeof this._i&&this.utcOffset(La(pd,this._i)),this}function Ta(a){return this.isValid()?(a=a?Ea(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function Ua(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Va(){if(!m(this._isDSTShifted))return this._isDSTShifted;var a={};if(n(a,this),a=Ba(a),a._a){var b=a._isUTC?h(a._a):Ea(a._a);this._isDSTShifted=this.isValid()&&s(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Wa(){return this.isValid()?!this._isUTC:!1}function Xa(){return this.isValid()?this._isUTC:!1}function Ya(){return this.isValid()?this._isUTC&&0===this._offset:!1}function Za(a,b){var c,d,e,g=a,h=null;return Ja(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:\\\"number\\\"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=Vd.exec(a))?(c=\\\"-\\\"===h[1]?-1:1,g={y:0,d:r(h[xd])*c,h:r(h[yd])*c,m:r(h[zd])*c,s:r(h[Ad])*c,ms:r(h[Bd])*c}):(h=Wd.exec(a))?(c=\\\"-\\\"===h[1]?-1:1,g={y:$a(h[2],c),M:$a(h[3],c),d:$a(h[4],c),h:$a(h[5],c),m:$a(h[6],c),s:$a(h[7],c),w:$a(h[8],c)}):null==g?g={}:\\\"object\\\"==typeof g&&(\\\"from\\\"in g||\\\"to\\\"in g)&&(e=ab(Ea(g.from),Ea(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Ia(g),Ja(a)&&f(a,\\\"_locale\\\")&&(d._locale=a._locale),d}function $a(a,b){var c=a&&parseFloat(a.replace(\\\",\\\",\\\".\\\"));return(isNaN(c)?0:c)*b}function _a(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,\\\"M\\\").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,\\\"M\\\"),c}function ab(a,b){var c;return a.isValid()&&b.isValid()?(b=Ma(b,a),a.isBefore(b)?c=_a(a,b):(c=_a(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function bb(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(ga(b,\\\"moment().\\\"+b+\\\"(period, number) is deprecated. Please use moment().\\\"+b+\\\"(number, period).\\\"),f=c,c=d,d=f),c=\\\"string\\\"==typeof c?+c:c,e=Za(c,d),cb(this,e,a),this}}function cb(b,c,d,e){var f=c._milliseconds,g=c._days,h=c._months;b.isValid()&&(e=null==e?!0:e,f&&b._d.setTime(+b._d+f*d),g&&G(b,\\\"Date\\\",F(b,\\\"Date\\\")+g*d),h&&Z(b,F(b,\\\"Month\\\")+h*d),e&&a.updateOffset(b,g||h))}function db(a,b){var c=a||Ea(),d=Ma(c,this).startOf(\\\"day\\\"),e=this.diff(d,\\\"days\\\",!0),f=-6>e?\\\"sameElse\\\":-1>e?\\\"lastWeek\\\":0>e?\\\"lastDay\\\":1>e?\\\"sameDay\\\":2>e?\\\"nextDay\\\":7>e?\\\"nextWeek\\\":\\\"sameElse\\\",g=b&&(D(b[f])?b[f]():b[f]);return this.format(g||this.localeData().calendar(f,this,Ea(c)))}function eb(){return new o(this)}function fb(a,b){var c=p(a)?a:Ea(a);return this.isValid()&&c.isValid()?(b=B(m(b)?\\\"millisecond\\\":b),\\\"millisecond\\\"===b?+this>+c:+c<+this.clone().startOf(b)):!1}function gb(a,b){var c=p(a)?a:Ea(a);return this.isValid()&&c.isValid()?(b=B(m(b)?\\\"millisecond\\\":b),\\\"millisecond\\\"===b?+c>+this:+this.clone().endOf(b)<+c):!1}function hb(a,b,c){return this.isAfter(a,c)&&this.isBefore(b,c)}function ib(a,b){var c,d=p(a)?a:Ea(a);return this.isValid()&&d.isValid()?(b=B(b||\\\"millisecond\\\"),\\\"millisecond\\\"===b?+this===+d:(c=+d,+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))):!1}function jb(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function kb(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function lb(a,b,c){var d,e,f,g;return this.isValid()?(d=Ma(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=B(b),\\\"year\\\"===b||\\\"month\\\"===b||\\\"quarter\\\"===b?(g=mb(this,d),\\\"quarter\\\"===b?g/=3:\\\"year\\\"===b&&(g/=12)):(f=this-d,g=\\\"second\\\"===b?f/1e3:\\\"minute\\\"===b?f/6e4:\\\"hour\\\"===b?f/36e5:\\\"day\\\"===b?(f-e)/864e5:\\\"week\\\"===b?(f-e)/6048e5:f),c?g:q(g)):NaN):NaN}function mb(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,\\\"months\\\");return 0>b-f?(c=a.clone().add(e-1,\\\"months\\\"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,\\\"months\\\"),d=(b-f)/(c-f)),-(e+d)}function nb(){return this.clone().locale(\\\"en\\\").format(\\\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\\\")}function ob(){var a=this.clone().utc();return 0f&&(b=f),Ob.call(this,a,b,c,d,e))}function Ob(a,b,c,d,e){var f=pa(a,b,c,d,e),g=ka(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Pb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Qb(a){return qa(a,this._week.dow,this._week.doy).week}function Rb(){return this._week.dow}function Sb(){return this._week.doy}function Tb(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),\\\"d\\\")}function Ub(a){var b=qa(this,1,4).week;return null==a?b:this.add(7*(a-b),\\\"d\\\")}function Vb(a,b){return\\\"string\\\"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),\\\"number\\\"==typeof a?a:null):parseInt(a,10)}function Wb(a,b){return c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?\\\"format\\\":\\\"standalone\\\"][a.day()]}function Xb(a){return this._weekdaysShort[a.day()]}function Yb(a){return this._weekdaysMin[a.day()]}function Zb(a,b,c){var d,e,f;for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){if(e=Ea([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp(\\\"^\\\"+this.weekdays(e,\\\"\\\").replace(\\\".\\\",\\\".?\\\")+\\\"$\\\",\\\"i\\\"),this._shortWeekdaysParse[d]=new RegExp(\\\"^\\\"+this.weekdaysShort(e,\\\"\\\").replace(\\\".\\\",\\\".?\\\")+\\\"$\\\",\\\"i\\\"),this._minWeekdaysParse[d]=new RegExp(\\\"^\\\"+this.weekdaysMin(e,\\\"\\\").replace(\\\".\\\",\\\".?\\\")+\\\"$\\\",\\\"i\\\")),this._weekdaysParse[d]||(f=\\\"^\\\"+this.weekdays(e,\\\"\\\")+\\\"|^\\\"+this.weekdaysShort(e,\\\"\\\")+\\\"|^\\\"+this.weekdaysMin(e,\\\"\\\"),this._weekdaysParse[d]=new RegExp(f.replace(\\\".\\\",\\\"\\\"),\\\"i\\\")),c&&\\\"dddd\\\"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&\\\"ddd\\\"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&\\\"dd\\\"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function $b(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Vb(a,this.localeData()),this.add(a-b,\\\"d\\\")):b}function _b(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,\\\"d\\\")}function ac(a){return this.isValid()?null==a?this.day()||7:this.day(this.day()%7?a:a-7):null!=a?this:NaN}function bc(a){var b=Math.round((this.clone().startOf(\\\"day\\\")-this.clone().startOf(\\\"year\\\"))/864e5)+1;return null==a?b:this.add(a-b,\\\"d\\\")}function cc(){return this.hours()%12||12}function dc(a,b){J(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function ec(a,b){return b._meridiemParse}function fc(a){return\\\"p\\\"===(a+\\\"\\\").toLowerCase().charAt(0)}function gc(a,b,c){return a>11?c?\\\"pm\\\":\\\"PM\\\":c?\\\"am\\\":\\\"AM\\\"}function hc(a,b){b[Bd]=r(1e3*(\\\"0.\\\"+a))}function ic(){return this._isUTC?\\\"UTC\\\":\\\"\\\"}function jc(){return this._isUTC?\\\"Coordinated Universal Time\\\":\\\"\\\"}function kc(a){return Ea(1e3*a)}function lc(){return Ea.apply(null,arguments).parseZone()}function mc(a,b,c){var d=this._calendar[a];return D(d)?d.call(b,c):d}function nc(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function oc(){return this._invalidDate}function pc(a){return this._ordinal.replace(\\\"%d\\\",a)}function qc(a){return a}function rc(a,b,c,d){var e=this._relativeTime[c];return D(e)?e(a,b,c,d):e.replace(/%d/i,a)}function sc(a,b){var c=this._relativeTime[a>0?\\\"future\\\":\\\"past\\\"];return D(c)?c(b):c.replace(/%s/i,b)}function tc(a){var b,c;for(c in a)b=a[c],D(b)?this[c]=b:this[\\\"_\\\"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+\\\"|\\\"+/\\\\d{1,2}/.source)}function uc(a,b,c,d){var e=z(),f=h().set(d,b);return e[c](f,a)}function vc(a,b,c,d,e){if(\\\"number\\\"==typeof a&&(b=a,a=void 0),a=a||\\\"\\\",null!=b)return uc(a,b,c,e);var f,g=[];for(f=0;d>f;f++)g[f]=uc(a,f,c,e);return g}function wc(a,b){return vc(a,b,\\\"months\\\",12,\\\"month\\\")}function xc(a,b){return vc(a,b,\\\"monthsShort\\\",12,\\\"month\\\")}function yc(a,b){return vc(a,b,\\\"weekdays\\\",7,\\\"day\\\")}function zc(a,b){return vc(a,b,\\\"weekdaysShort\\\",7,\\\"day\\\")}function Ac(a,b){return vc(a,b,\\\"weekdaysMin\\\",7,\\\"day\\\")}function Bc(){var a=this._data;return this._milliseconds=se(this._milliseconds),this._days=se(this._days),this._months=se(this._months),a.milliseconds=se(a.milliseconds),a.seconds=se(a.seconds),a.minutes=se(a.minutes),a.hours=se(a.hours),a.months=se(a.months),a.years=se(a.years),this}function Cc(a,b,c,d){var e=Za(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function Dc(a,b){return Cc(this,a,b,1)}function Ec(a,b){return Cc(this,a,b,-1)}function Fc(a){return 0>a?Math.floor(a):Math.ceil(a)}function Gc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*Fc(Ic(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=q(f/1e3),i.seconds=a%60,b=q(a/60),i.minutes=b%60,c=q(b/60),i.hours=c%24,g+=q(c/24),e=q(Hc(g)),h+=e,g-=Fc(Ic(e)),d=q(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function Hc(a){return 4800*a/146097}function Ic(a){return 146097*a/4800}function Jc(a){var b,c,d=this._milliseconds;if(a=B(a),\\\"month\\\"===a||\\\"year\\\"===a)return b=this._days+d/864e5,c=this._months+Hc(b),\\\"month\\\"===a?c:c/12;switch(b=this._days+Math.round(Ic(this._months)),a){case\\\"week\\\":return b/7+d/6048e5;case\\\"day\\\":return b+d/864e5;case\\\"hour\\\":return 24*b+d/36e5;case\\\"minute\\\":return 1440*b+d/6e4;case\\\"second\\\":return 86400*b+d/1e3;case\\\"millisecond\\\":return Math.floor(864e5*b)+d;default:throw new Error(\\\"Unknown unit \\\"+a)}}function Kc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*r(this._months/12)}function Lc(a){return function(){return this.as(a)}}function Mc(a){return a=B(a),this[a+\\\"s\\\"]()}function Nc(a){return function(){return this._data[a]}}function Oc(){return q(this.days()/7)}function Pc(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function Qc(a,b,c){var d=Za(a).abs(),e=Ie(d.as(\\\"s\\\")),f=Ie(d.as(\\\"m\\\")),g=Ie(d.as(\\\"h\\\")),h=Ie(d.as(\\\"d\\\")),i=Ie(d.as(\\\"M\\\")),j=Ie(d.as(\\\"y\\\")),k=e=f&&[\\\"m\\\"]||f=g&&[\\\"h\\\"]||g=h&&[\\\"d\\\"]||h=i&&[\\\"M\\\"]||i=j&&[\\\"y\\\"]||[\\\"yy\\\",j];return k[2]=b,k[3]=+a>0,k[4]=c,Pc.apply(null,k)}function Rc(a,b){return void 0===Je[a]?!1:void 0===b?Je[a]:(Je[a]=b,!0)}function Sc(a){var b=this.localeData(),c=Qc(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function Tc(){var a,b,c,d=Ke(this._milliseconds)/1e3,e=Ke(this._days),f=Ke(this._months);a=q(d/60),b=q(a/60),d%=60,a%=60,c=q(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?\\\"-\\\":\\\"\\\")+\\\"P\\\"+(g?g+\\\"Y\\\":\\\"\\\")+(h?h+\\\"M\\\":\\\"\\\")+(i?i+\\\"D\\\":\\\"\\\")+(j||k||l?\\\"T\\\":\\\"\\\")+(j?j+\\\"H\\\":\\\"\\\")+(k?k+\\\"M\\\":\\\"\\\")+(l?l+\\\"S\\\":\\\"\\\"):\\\"P0D\\\"}var Uc,Vc,Wc=a.momentProperties=[],Xc=!1,Yc={},Zc={},$c=/(\\\\[[^\\\\[]*\\\\])|(\\\\\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,_c=/(\\\\[[^\\\\[]*\\\\])|(\\\\\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,ad={},bd={},cd=/\\\\d/,dd=/\\\\d\\\\d/,ed=/\\\\d{3}/,fd=/\\\\d{4}/,gd=/[+-]?\\\\d{6}/,hd=/\\\\d\\\\d?/,id=/\\\\d\\\\d\\\\d\\\\d?/,jd=/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d?/,kd=/\\\\d{1,3}/,ld=/\\\\d{1,4}/,md=/[+-]?\\\\d{1,6}/,nd=/\\\\d+/,od=/[+-]?\\\\d+/,pd=/Z|[+-]\\\\d\\\\d:?\\\\d\\\\d/gi,qd=/Z|[+-]\\\\d\\\\d(?::?\\\\d\\\\d)?/gi,rd=/[+-]?\\\\d+(\\\\.\\\\d{1,3})?/,sd=/[0-9]*['a-z\\\\u00A0-\\\\u05FF\\\\u0700-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]+|[\\\\u0600-\\\\u06FF\\\\/]+(\\\\s*?[\\\\u0600-\\\\u06FF]+){1,2}/i,td={},ud={},vd=0,wd=1,xd=2,yd=3,zd=4,Ad=5,Bd=6,Cd=7,Dd=8;J(\\\"M\\\",[\\\"MM\\\",2],\\\"Mo\\\",function(){return this.month()+1}),J(\\\"MMM\\\",0,0,function(a){return this.localeData().monthsShort(this,a)}),J(\\\"MMMM\\\",0,0,function(a){return this.localeData().months(this,a)}),A(\\\"month\\\",\\\"M\\\"),O(\\\"M\\\",hd),O(\\\"MM\\\",hd,dd),O(\\\"MMM\\\",function(a,b){return b.monthsShortRegex(a)}),O(\\\"MMMM\\\",function(a,b){return b.monthsRegex(a)}),S([\\\"M\\\",\\\"MM\\\"],function(a,b){b[wd]=r(a)-1}),S([\\\"MMM\\\",\\\"MMMM\\\"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[wd]=e:j(c).invalidMonth=a});var Ed=/D[oD]?(\\\\[[^\\\\[\\\\]]*\\\\]|\\\\s+)+MMMM?/,Fd=\\\"January_February_March_April_May_June_July_August_September_October_November_December\\\".split(\\\"_\\\"),Gd=\\\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\\\".split(\\\"_\\\"),Hd=sd,Id=sd,Jd={};a.suppressDeprecationWarnings=!1;var Kd=/^\\\\s*((?:[+-]\\\\d{6}|\\\\d{4})-(?:\\\\d\\\\d-\\\\d\\\\d|W\\\\d\\\\d-\\\\d|W\\\\d\\\\d|\\\\d\\\\d\\\\d|\\\\d\\\\d))(?:(T| )(\\\\d\\\\d(?::\\\\d\\\\d(?::\\\\d\\\\d(?:[.,]\\\\d+)?)?)?)([\\\\+\\\\-]\\\\d\\\\d(?::?\\\\d\\\\d)?|\\\\s*Z)?)?/,Ld=/^\\\\s*((?:[+-]\\\\d{6}|\\\\d{4})(?:\\\\d\\\\d\\\\d\\\\d|W\\\\d\\\\d\\\\d|W\\\\d\\\\d|\\\\d\\\\d\\\\d|\\\\d\\\\d))(?:(T| )(\\\\d\\\\d(?:\\\\d\\\\d(?:\\\\d\\\\d(?:[.,]\\\\d+)?)?)?)([\\\\+\\\\-]\\\\d\\\\d(?::?\\\\d\\\\d)?|\\\\s*Z)?)?/,Md=/Z|[+-]\\\\d\\\\d(?::?\\\\d\\\\d)?/,Nd=[[\\\"YYYYYY-MM-DD\\\",/[+-]\\\\d{6}-\\\\d\\\\d-\\\\d\\\\d/],[\\\"YYYY-MM-DD\\\",/\\\\d{4}-\\\\d\\\\d-\\\\d\\\\d/],[\\\"GGGG-[W]WW-E\\\",/\\\\d{4}-W\\\\d\\\\d-\\\\d/],[\\\"GGGG-[W]WW\\\",/\\\\d{4}-W\\\\d\\\\d/,!1],[\\\"YYYY-DDD\\\",/\\\\d{4}-\\\\d{3}/],[\\\"YYYY-MM\\\",/\\\\d{4}-\\\\d\\\\d/,!1],[\\\"YYYYYYMMDD\\\",/[+-]\\\\d{10}/],[\\\"YYYYMMDD\\\",/\\\\d{8}/],[\\\"GGGG[W]WWE\\\",/\\\\d{4}W\\\\d{3}/],[\\\"GGGG[W]WW\\\",/\\\\d{4}W\\\\d{2}/,!1],[\\\"YYYYDDD\\\",/\\\\d{7}/]],Od=[[\\\"HH:mm:ss.SSSS\\\",/\\\\d\\\\d:\\\\d\\\\d:\\\\d\\\\d\\\\.\\\\d+/],[\\\"HH:mm:ss,SSSS\\\",/\\\\d\\\\d:\\\\d\\\\d:\\\\d\\\\d,\\\\d+/],[\\\"HH:mm:ss\\\",/\\\\d\\\\d:\\\\d\\\\d:\\\\d\\\\d/],[\\\"HH:mm\\\",/\\\\d\\\\d:\\\\d\\\\d/],[\\\"HHmmss.SSSS\\\",/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d\\\\.\\\\d+/],[\\\"HHmmss,SSSS\\\",/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d,\\\\d+/],[\\\"HHmmss\\\",/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d/],[\\\"HHmm\\\",/\\\\d\\\\d\\\\d\\\\d/],[\\\"HH\\\",/\\\\d\\\\d/]],Pd=/^\\\\/?Date\\\\((\\\\-?\\\\d+)/i;a.createFromInputFallback=fa(\\\"moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.\\\",function(a){a._d=new Date(a._i+(a._useUTC?\\\" UTC\\\":\\\"\\\"))}),J(\\\"Y\\\",0,0,function(){var a=this.year();return 9999>=a?\\\"\\\"+a:\\\"+\\\"+a}),J(0,[\\\"YY\\\",2],0,function(){return this.year()%100}),J(0,[\\\"YYYY\\\",4],0,\\\"year\\\"),J(0,[\\\"YYYYY\\\",5],0,\\\"year\\\"),J(0,[\\\"YYYYYY\\\",6,!0],0,\\\"year\\\"),A(\\\"year\\\",\\\"y\\\"),O(\\\"Y\\\",od),O(\\\"YY\\\",hd,dd),O(\\\"YYYY\\\",ld,fd),O(\\\"YYYYY\\\",md,gd),O(\\\"YYYYYY\\\",md,gd),S([\\\"YYYYY\\\",\\\"YYYYYY\\\"],vd),S(\\\"YYYY\\\",function(b,c){c[vd]=2===b.length?a.parseTwoDigitYear(b):r(b)}),S(\\\"YY\\\",function(b,c){c[vd]=a.parseTwoDigitYear(b)}),S(\\\"Y\\\",function(a,b){b[vd]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return r(a)+(r(a)>68?1900:2e3)};var Qd=E(\\\"FullYear\\\",!1);a.ISO_8601=function(){};var Rd=fa(\\\"moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548\\\",function(){var a=Ea.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:l()}),Sd=fa(\\\"moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548\\\",function(){var a=Ea.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:l()}),Td=function(){return Date.now?Date.now():+new Date};Ka(\\\"Z\\\",\\\":\\\"),Ka(\\\"ZZ\\\",\\\"\\\"),O(\\\"Z\\\",qd),O(\\\"ZZ\\\",qd),S([\\\"Z\\\",\\\"ZZ\\\"],function(a,b,c){c._useUTC=!0,c._tzm=La(qd,a)});var Ud=/([\\\\+\\\\-]|\\\\d\\\\d)/gi;a.updateOffset=function(){};var Vd=/(\\\\-)?(?:(\\\\d*)[. ])?(\\\\d+)\\\\:(\\\\d+)(?:\\\\:(\\\\d+)\\\\.?(\\\\d{3})?)?/,Wd=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;\\nZa.fn=Ia.prototype;var Xd=bb(1,\\\"add\\\"),Yd=bb(-1,\\\"subtract\\\");a.defaultFormat=\\\"YYYY-MM-DDTHH:mm:ssZ\\\";var Zd=fa(\\\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\\\",function(a){return void 0===a?this.localeData():this.locale(a)});J(0,[\\\"gg\\\",2],0,function(){return this.weekYear()%100}),J(0,[\\\"GG\\\",2],0,function(){return this.isoWeekYear()%100}),Ib(\\\"gggg\\\",\\\"weekYear\\\"),Ib(\\\"ggggg\\\",\\\"weekYear\\\"),Ib(\\\"GGGG\\\",\\\"isoWeekYear\\\"),Ib(\\\"GGGGG\\\",\\\"isoWeekYear\\\"),A(\\\"weekYear\\\",\\\"gg\\\"),A(\\\"isoWeekYear\\\",\\\"GG\\\"),O(\\\"G\\\",od),O(\\\"g\\\",od),O(\\\"GG\\\",hd,dd),O(\\\"gg\\\",hd,dd),O(\\\"GGGG\\\",ld,fd),O(\\\"gggg\\\",ld,fd),O(\\\"GGGGG\\\",md,gd),O(\\\"ggggg\\\",md,gd),T([\\\"gggg\\\",\\\"ggggg\\\",\\\"GGGG\\\",\\\"GGGGG\\\"],function(a,b,c,d){b[d.substr(0,2)]=r(a)}),T([\\\"gg\\\",\\\"GG\\\"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),J(\\\"Q\\\",0,\\\"Qo\\\",\\\"quarter\\\"),A(\\\"quarter\\\",\\\"Q\\\"),O(\\\"Q\\\",cd),S(\\\"Q\\\",function(a,b){b[wd]=3*(r(a)-1)}),J(\\\"w\\\",[\\\"ww\\\",2],\\\"wo\\\",\\\"week\\\"),J(\\\"W\\\",[\\\"WW\\\",2],\\\"Wo\\\",\\\"isoWeek\\\"),A(\\\"week\\\",\\\"w\\\"),A(\\\"isoWeek\\\",\\\"W\\\"),O(\\\"w\\\",hd),O(\\\"ww\\\",hd,dd),O(\\\"W\\\",hd),O(\\\"WW\\\",hd,dd),T([\\\"w\\\",\\\"ww\\\",\\\"W\\\",\\\"WW\\\"],function(a,b,c,d){b[d.substr(0,1)]=r(a)});var $d={dow:0,doy:6};J(\\\"D\\\",[\\\"DD\\\",2],\\\"Do\\\",\\\"date\\\"),A(\\\"date\\\",\\\"D\\\"),O(\\\"D\\\",hd),O(\\\"DD\\\",hd,dd),O(\\\"Do\\\",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),S([\\\"D\\\",\\\"DD\\\"],xd),S(\\\"Do\\\",function(a,b){b[xd]=r(a.match(hd)[0],10)});var _d=E(\\\"Date\\\",!0);J(\\\"d\\\",0,\\\"do\\\",\\\"day\\\"),J(\\\"dd\\\",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),J(\\\"ddd\\\",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),J(\\\"dddd\\\",0,0,function(a){return this.localeData().weekdays(this,a)}),J(\\\"e\\\",0,0,\\\"weekday\\\"),J(\\\"E\\\",0,0,\\\"isoWeekday\\\"),A(\\\"day\\\",\\\"d\\\"),A(\\\"weekday\\\",\\\"e\\\"),A(\\\"isoWeekday\\\",\\\"E\\\"),O(\\\"d\\\",hd),O(\\\"e\\\",hd),O(\\\"E\\\",hd),O(\\\"dd\\\",sd),O(\\\"ddd\\\",sd),O(\\\"dddd\\\",sd),T([\\\"dd\\\",\\\"ddd\\\",\\\"dddd\\\"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:j(c).invalidWeekday=a}),T([\\\"d\\\",\\\"e\\\",\\\"E\\\"],function(a,b,c,d){b[d]=r(a)});var ae=\\\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\\\".split(\\\"_\\\"),be=\\\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\\\".split(\\\"_\\\"),ce=\\\"Su_Mo_Tu_We_Th_Fr_Sa\\\".split(\\\"_\\\");J(\\\"DDD\\\",[\\\"DDDD\\\",3],\\\"DDDo\\\",\\\"dayOfYear\\\"),A(\\\"dayOfYear\\\",\\\"DDD\\\"),O(\\\"DDD\\\",kd),O(\\\"DDDD\\\",ed),S([\\\"DDD\\\",\\\"DDDD\\\"],function(a,b,c){c._dayOfYear=r(a)}),J(\\\"H\\\",[\\\"HH\\\",2],0,\\\"hour\\\"),J(\\\"h\\\",[\\\"hh\\\",2],0,cc),J(\\\"hmm\\\",0,0,function(){return\\\"\\\"+cc.apply(this)+I(this.minutes(),2)}),J(\\\"hmmss\\\",0,0,function(){return\\\"\\\"+cc.apply(this)+I(this.minutes(),2)+I(this.seconds(),2)}),J(\\\"Hmm\\\",0,0,function(){return\\\"\\\"+this.hours()+I(this.minutes(),2)}),J(\\\"Hmmss\\\",0,0,function(){return\\\"\\\"+this.hours()+I(this.minutes(),2)+I(this.seconds(),2)}),dc(\\\"a\\\",!0),dc(\\\"A\\\",!1),A(\\\"hour\\\",\\\"h\\\"),O(\\\"a\\\",ec),O(\\\"A\\\",ec),O(\\\"H\\\",hd),O(\\\"h\\\",hd),O(\\\"HH\\\",hd,dd),O(\\\"hh\\\",hd,dd),O(\\\"hmm\\\",id),O(\\\"hmmss\\\",jd),O(\\\"Hmm\\\",id),O(\\\"Hmmss\\\",jd),S([\\\"H\\\",\\\"HH\\\"],yd),S([\\\"a\\\",\\\"A\\\"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),S([\\\"h\\\",\\\"hh\\\"],function(a,b,c){b[yd]=r(a),j(c).bigHour=!0}),S(\\\"hmm\\\",function(a,b,c){var d=a.length-2;b[yd]=r(a.substr(0,d)),b[zd]=r(a.substr(d)),j(c).bigHour=!0}),S(\\\"hmmss\\\",function(a,b,c){var d=a.length-4,e=a.length-2;b[yd]=r(a.substr(0,d)),b[zd]=r(a.substr(d,2)),b[Ad]=r(a.substr(e)),j(c).bigHour=!0}),S(\\\"Hmm\\\",function(a,b,c){var d=a.length-2;b[yd]=r(a.substr(0,d)),b[zd]=r(a.substr(d))}),S(\\\"Hmmss\\\",function(a,b,c){var d=a.length-4,e=a.length-2;b[yd]=r(a.substr(0,d)),b[zd]=r(a.substr(d,2)),b[Ad]=r(a.substr(e))});var de=/[ap]\\\\.?m?\\\\.?/i,ee=E(\\\"Hours\\\",!0);J(\\\"m\\\",[\\\"mm\\\",2],0,\\\"minute\\\"),A(\\\"minute\\\",\\\"m\\\"),O(\\\"m\\\",hd),O(\\\"mm\\\",hd,dd),S([\\\"m\\\",\\\"mm\\\"],zd);var fe=E(\\\"Minutes\\\",!1);J(\\\"s\\\",[\\\"ss\\\",2],0,\\\"second\\\"),A(\\\"second\\\",\\\"s\\\"),O(\\\"s\\\",hd),O(\\\"ss\\\",hd,dd),S([\\\"s\\\",\\\"ss\\\"],Ad);var ge=E(\\\"Seconds\\\",!1);J(\\\"S\\\",0,0,function(){return~~(this.millisecond()/100)}),J(0,[\\\"SS\\\",2],0,function(){return~~(this.millisecond()/10)}),J(0,[\\\"SSS\\\",3],0,\\\"millisecond\\\"),J(0,[\\\"SSSS\\\",4],0,function(){return 10*this.millisecond()}),J(0,[\\\"SSSSS\\\",5],0,function(){return 100*this.millisecond()}),J(0,[\\\"SSSSSS\\\",6],0,function(){return 1e3*this.millisecond()}),J(0,[\\\"SSSSSSS\\\",7],0,function(){return 1e4*this.millisecond()}),J(0,[\\\"SSSSSSSS\\\",8],0,function(){return 1e5*this.millisecond()}),J(0,[\\\"SSSSSSSSS\\\",9],0,function(){return 1e6*this.millisecond()}),A(\\\"millisecond\\\",\\\"ms\\\"),O(\\\"S\\\",kd,cd),O(\\\"SS\\\",kd,dd),O(\\\"SSS\\\",kd,ed);var he;for(he=\\\"SSSS\\\";he.length<=9;he+=\\\"S\\\")O(he,nd);for(he=\\\"S\\\";he.length<=9;he+=\\\"S\\\")S(he,hc);var ie=E(\\\"Milliseconds\\\",!1);J(\\\"z\\\",0,0,\\\"zoneAbbr\\\"),J(\\\"zz\\\",0,0,\\\"zoneName\\\");var je=o.prototype;je.add=Xd,je.calendar=db,je.clone=eb,je.diff=lb,je.endOf=xb,je.format=pb,je.from=qb,je.fromNow=rb,je.to=sb,je.toNow=tb,je.get=H,je.invalidAt=Gb,je.isAfter=fb,je.isBefore=gb,je.isBetween=hb,je.isSame=ib,je.isSameOrAfter=jb,je.isSameOrBefore=kb,je.isValid=Eb,je.lang=Zd,je.locale=ub,je.localeData=vb,je.max=Sd,je.min=Rd,je.parsingFlags=Fb,je.set=H,je.startOf=wb,je.subtract=Yd,je.toArray=Bb,je.toObject=Cb,je.toDate=Ab,je.toISOString=ob,je.toJSON=Db,je.toString=nb,je.unix=zb,je.valueOf=yb,je.creationData=Hb,je.year=Qd,je.isLeapYear=na,je.weekYear=Jb,je.isoWeekYear=Kb,je.quarter=je.quarters=Pb,je.month=$,je.daysInMonth=_,je.week=je.weeks=Tb,je.isoWeek=je.isoWeeks=Ub,je.weeksInYear=Mb,je.isoWeeksInYear=Lb,je.date=_d,je.day=je.days=$b,je.weekday=_b,je.isoWeekday=ac,je.dayOfYear=bc,je.hour=je.hours=ee,je.minute=je.minutes=fe,je.second=je.seconds=ge,je.millisecond=je.milliseconds=ie,je.utcOffset=Oa,je.utc=Qa,je.local=Ra,je.parseZone=Sa,je.hasAlignedHourOffset=Ta,je.isDST=Ua,je.isDSTShifted=Va,je.isLocal=Wa,je.isUtcOffset=Xa,je.isUtc=Ya,je.isUTC=Ya,je.zoneAbbr=ic,je.zoneName=jc,je.dates=fa(\\\"dates accessor is deprecated. Use date instead.\\\",_d),je.months=fa(\\\"months accessor is deprecated. Use month instead\\\",$),je.years=fa(\\\"years accessor is deprecated. Use year instead\\\",Qd),je.zone=fa(\\\"moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779\\\",Pa);var ke=je,le={sameDay:\\\"[Today at] LT\\\",nextDay:\\\"[Tomorrow at] LT\\\",nextWeek:\\\"dddd [at] LT\\\",lastDay:\\\"[Yesterday at] LT\\\",lastWeek:\\\"[Last] dddd [at] LT\\\",sameElse:\\\"L\\\"},me={LTS:\\\"h:mm:ss A\\\",LT:\\\"h:mm A\\\",L:\\\"MM/DD/YYYY\\\",LL:\\\"MMMM D, YYYY\\\",LLL:\\\"MMMM D, YYYY h:mm A\\\",LLLL:\\\"dddd, MMMM D, YYYY h:mm A\\\"},ne=\\\"Invalid date\\\",oe=\\\"%d\\\",pe=/\\\\d{1,2}/,qe={future:\\\"in %s\\\",past:\\\"%s ago\\\",s:\\\"a few seconds\\\",m:\\\"a minute\\\",mm:\\\"%d minutes\\\",h:\\\"an hour\\\",hh:\\\"%d hours\\\",d:\\\"a day\\\",dd:\\\"%d days\\\",M:\\\"a month\\\",MM:\\\"%d months\\\",y:\\\"a year\\\",yy:\\\"%d years\\\"},re=t.prototype;re._calendar=le,re.calendar=mc,re._longDateFormat=me,re.longDateFormat=nc,re._invalidDate=ne,re.invalidDate=oc,re._ordinal=oe,re.ordinal=pc,re._ordinalParse=pe,re.preparse=qc,re.postformat=qc,re._relativeTime=qe,re.relativeTime=rc,re.pastFuture=sc,re.set=tc,re.months=W,re._months=Fd,re.monthsShort=X,re._monthsShort=Gd,re.monthsParse=Y,re._monthsRegex=Id,re.monthsRegex=ba,re._monthsShortRegex=Hd,re.monthsShortRegex=aa,re.week=Qb,re._week=$d,re.firstDayOfYear=Sb,re.firstDayOfWeek=Rb,re.weekdays=Wb,re._weekdays=ae,re.weekdaysMin=Yb,re._weekdaysMin=ce,re.weekdaysShort=Xb,re._weekdaysShort=be,re.weekdaysParse=Zb,re.isPM=fc,re._meridiemParse=de,re.meridiem=gc,x(\\\"en\\\",{ordinalParse:/\\\\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===r(a%100/10)?\\\"th\\\":1===b?\\\"st\\\":2===b?\\\"nd\\\":3===b?\\\"rd\\\":\\\"th\\\";return a+c}}),a.lang=fa(\\\"moment.lang is deprecated. Use moment.locale instead.\\\",x),a.langData=fa(\\\"moment.langData is deprecated. Use moment.localeData instead.\\\",z);var se=Math.abs,te=Lc(\\\"ms\\\"),ue=Lc(\\\"s\\\"),ve=Lc(\\\"m\\\"),we=Lc(\\\"h\\\"),xe=Lc(\\\"d\\\"),ye=Lc(\\\"w\\\"),ze=Lc(\\\"M\\\"),Ae=Lc(\\\"y\\\"),Be=Nc(\\\"milliseconds\\\"),Ce=Nc(\\\"seconds\\\"),De=Nc(\\\"minutes\\\"),Ee=Nc(\\\"hours\\\"),Fe=Nc(\\\"days\\\"),Ge=Nc(\\\"months\\\"),He=Nc(\\\"years\\\"),Ie=Math.round,Je={s:45,m:45,h:22,d:26,M:11},Ke=Math.abs,Le=Ia.prototype;Le.abs=Bc,Le.add=Dc,Le.subtract=Ec,Le.as=Jc,Le.asMilliseconds=te,Le.asSeconds=ue,Le.asMinutes=ve,Le.asHours=we,Le.asDays=xe,Le.asWeeks=ye,Le.asMonths=ze,Le.asYears=Ae,Le.valueOf=Kc,Le._bubble=Gc,Le.get=Mc,Le.milliseconds=Be,Le.seconds=Ce,Le.minutes=De,Le.hours=Ee,Le.days=Fe,Le.weeks=Oc,Le.months=Ge,Le.years=He,Le.humanize=Sc,Le.toISOString=Tc,Le.toString=Tc,Le.toJSON=Tc,Le.locale=ub,Le.localeData=vb,Le.toIsoString=fa(\\\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\\\",Tc),Le.lang=Zd,J(\\\"X\\\",0,0,\\\"unix\\\"),J(\\\"x\\\",0,0,\\\"valueOf\\\"),O(\\\"x\\\",od),O(\\\"X\\\",rd),S(\\\"X\\\",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),S(\\\"x\\\",function(a,b,c){c._d=new Date(r(a))}),a.version=\\\"2.11.1\\\",b(Ea),a.fn=ke,a.min=Ga,a.max=Ha,a.now=Td,a.utc=h,a.unix=kc,a.months=wc,a.isDate=d,a.locale=x,a.invalid=l,a.duration=Za,a.isMoment=p,a.weekdays=yc,a.parseZone=lc,a.localeData=z,a.isDuration=Ja,a.monthsShort=xc,a.weekdaysMin=Ac,a.defineLocale=y,a.weekdaysShort=zc,a.normalizeUnits=B,a.relativeTimeThreshold=Rc,a.prototype=ke;var Me=a;return Me});\"\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(19)(__webpack_require__(36))\n\n/***/ },\n/* 36 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"/**\\n* @version: 2.1.17\\n* @author: Dan Grossman http://www.dangrossman.info/\\n* @copyright: Copyright (c) 2012-2015 Dan Grossman. All rights reserved.\\n* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php\\n* @website: https://www.improvely.com/\\n*/\\n\\n(function(root, factory) {\\n\\n if (typeof define === 'function' && define.amd) {\\n define(['moment', 'jquery', 'exports'], function(momentjs, $, exports) {\\n root.daterangepicker = factory(root, exports, momentjs, $);\\n });\\n\\n } else if (typeof exports !== 'undefined') {\\n var momentjs = require('moment');\\n var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; //isomorphic issue\\n if (!jQuery) {\\n try {\\n jQuery = require('jquery');\\n if (!jQuery.fn) jQuery.fn = {}; //isomorphic issue\\n } catch (err) {\\n if (!jQuery) throw new Error('jQuery dependency not found');\\n }\\n }\\n\\n factory(root, exports, momentjs, jQuery);\\n\\n // Finally, as a browser global.\\n } else {\\n root.daterangepicker = factory(root, {}, root.moment || moment, (root.jQuery || root.Zepto || root.ender || root.$));\\n }\\n\\n}(this || {}, function(root, daterangepicker, moment, $) { // 'this' doesn't exist on a server\\n\\n var DateRangePicker = function(element, options, cb) {\\n\\n //default settings for options\\n this.parentEl = 'body';\\n this.element = $(element);\\n this.startDate = moment().startOf('day');\\n this.endDate = moment().endOf('day');\\n this.minDate = false;\\n this.maxDate = false;\\n this.dateLimit = false;\\n this.autoApply = false;\\n this.singleDatePicker = false;\\n this.showDropdowns = false;\\n this.showWeekNumbers = false;\\n this.timePicker = false;\\n this.timePicker24Hour = false;\\n this.timePickerIncrement = 1;\\n this.timePickerSeconds = false;\\n this.linkedCalendars = true;\\n this.autoUpdateInput = true;\\n this.ranges = {};\\n\\n this.opens = 'right';\\n if (this.element.hasClass('pull-right'))\\n this.opens = 'left';\\n\\n this.drops = 'down';\\n if (this.element.hasClass('dropup'))\\n this.drops = 'up';\\n\\n this.buttonClasses = 'btn btn-sm';\\n this.applyClass = 'btn-success';\\n this.cancelClass = 'btn-default';\\n\\n this.locale = {\\n format: 'MM/DD/YYYY',\\n separator: ' - ',\\n applyLabel: 'Apply',\\n cancelLabel: 'Cancel',\\n weekLabel: 'W',\\n customRangeLabel: 'Custom Range',\\n daysOfWeek: moment.weekdaysMin(),\\n monthNames: moment.monthsShort(),\\n firstDay: moment.localeData().firstDayOfWeek()\\n };\\n\\n this.callback = function() { };\\n\\n //some state information\\n this.isShowing = false;\\n this.leftCalendar = {};\\n this.rightCalendar = {};\\n\\n //custom options from user\\n if (typeof options !== 'object' || options === null)\\n options = {};\\n\\n //allow setting options with data attributes\\n //data-api options will be overwritten with custom javascript options\\n options = $.extend(this.element.data(), options);\\n\\n //html template for the picker UI\\n if (typeof options.template !== 'string')\\n options.template = '
' +\\n '
' +\\n '
' +\\n '' +\\n '' +\\n '
' +\\n '
' +\\n '' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n '' +\\n '' +\\n '
' +\\n '
' +\\n '' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n ' ' +\\n '' +\\n '
' +\\n '
' +\\n '
';\\n\\n this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);\\n this.container = $(options.template).appendTo(this.parentEl);\\n\\n //\\n // handle all the possible options overriding defaults\\n //\\n\\n if (typeof options.locale === 'object') {\\n\\n if (typeof options.locale.format === 'string')\\n this.locale.format = options.locale.format;\\n\\n if (typeof options.locale.separator === 'string')\\n this.locale.separator = options.locale.separator;\\n\\n if (typeof options.locale.daysOfWeek === 'object')\\n this.locale.daysOfWeek = options.locale.daysOfWeek.slice();\\n\\n if (typeof options.locale.monthNames === 'object')\\n this.locale.monthNames = options.locale.monthNames.slice();\\n\\n if (typeof options.locale.firstDay === 'number')\\n this.locale.firstDay = options.locale.firstDay;\\n\\n if (typeof options.locale.applyLabel === 'string')\\n this.locale.applyLabel = options.locale.applyLabel;\\n\\n if (typeof options.locale.cancelLabel === 'string')\\n this.locale.cancelLabel = options.locale.cancelLabel;\\n\\n if (typeof options.locale.weekLabel === 'string')\\n this.locale.weekLabel = options.locale.weekLabel;\\n\\n if (typeof options.locale.customRangeLabel === 'string')\\n this.locale.customRangeLabel = options.locale.customRangeLabel;\\n\\n }\\n\\n if (typeof options.startDate === 'string')\\n this.startDate = moment(options.startDate, this.locale.format);\\n\\n if (typeof options.endDate === 'string')\\n this.endDate = moment(options.endDate, this.locale.format);\\n\\n if (typeof options.minDate === 'string')\\n this.minDate = moment(options.minDate, this.locale.format);\\n\\n if (typeof options.maxDate === 'string')\\n this.maxDate = moment(options.maxDate, this.locale.format);\\n\\n if (typeof options.startDate === 'object')\\n this.startDate = moment(options.startDate);\\n\\n if (typeof options.endDate === 'object')\\n this.endDate = moment(options.endDate);\\n\\n if (typeof options.minDate === 'object')\\n this.minDate = moment(options.minDate);\\n\\n if (typeof options.maxDate === 'object')\\n this.maxDate = moment(options.maxDate);\\n\\n // sanity check for bad options\\n if (this.minDate && this.startDate.isBefore(this.minDate))\\n this.startDate = this.minDate.clone();\\n\\n // sanity check for bad options\\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\\n this.endDate = this.maxDate.clone();\\n\\n if (typeof options.applyClass === 'string')\\n this.applyClass = options.applyClass;\\n\\n if (typeof options.cancelClass === 'string')\\n this.cancelClass = options.cancelClass;\\n\\n if (typeof options.dateLimit === 'object')\\n this.dateLimit = options.dateLimit;\\n\\n if (typeof options.opens === 'string')\\n this.opens = options.opens;\\n\\n if (typeof options.drops === 'string')\\n this.drops = options.drops;\\n\\n if (typeof options.showWeekNumbers === 'boolean')\\n this.showWeekNumbers = options.showWeekNumbers;\\n\\n if (typeof options.buttonClasses === 'string')\\n this.buttonClasses = options.buttonClasses;\\n\\n if (typeof options.buttonClasses === 'object')\\n this.buttonClasses = options.buttonClasses.join(' ');\\n\\n if (typeof options.showDropdowns === 'boolean')\\n this.showDropdowns = options.showDropdowns;\\n\\n if (typeof options.singleDatePicker === 'boolean') {\\n this.singleDatePicker = options.singleDatePicker;\\n if (this.singleDatePicker)\\n this.endDate = this.startDate.clone();\\n }\\n\\n if (typeof options.timePicker === 'boolean')\\n this.timePicker = options.timePicker;\\n\\n if (typeof options.timePickerSeconds === 'boolean')\\n this.timePickerSeconds = options.timePickerSeconds;\\n\\n if (typeof options.timePickerIncrement === 'number')\\n this.timePickerIncrement = options.timePickerIncrement;\\n\\n if (typeof options.timePicker24Hour === 'boolean')\\n this.timePicker24Hour = options.timePicker24Hour;\\n\\n if (typeof options.autoApply === 'boolean')\\n this.autoApply = options.autoApply;\\n\\n if (typeof options.autoUpdateInput === 'boolean')\\n this.autoUpdateInput = options.autoUpdateInput;\\n\\n if (typeof options.linkedCalendars === 'boolean')\\n this.linkedCalendars = options.linkedCalendars;\\n\\n if (typeof options.isInvalidDate === 'function')\\n this.isInvalidDate = options.isInvalidDate;\\n\\n // update day names order to firstDay\\n if (this.locale.firstDay != 0) {\\n var iterator = this.locale.firstDay;\\n while (iterator > 0) {\\n this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());\\n iterator--;\\n }\\n }\\n\\n var start, end, range;\\n\\n //if no start/end dates set, check if an input element contains initial values\\n if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {\\n if ($(this.element).is('input[type=text]')) {\\n var val = $(this.element).val(),\\n split = val.split(this.locale.separator);\\n\\n start = end = null;\\n\\n if (split.length == 2) {\\n start = moment(split[0], this.locale.format);\\n end = moment(split[1], this.locale.format);\\n } else if (this.singleDatePicker && val !== \\\"\\\") {\\n start = moment(val, this.locale.format);\\n end = moment(val, this.locale.format);\\n }\\n if (start !== null && end !== null) {\\n this.setStartDate(start);\\n this.setEndDate(end);\\n }\\n }\\n }\\n\\n if (typeof options.ranges === 'object') {\\n for (range in options.ranges) {\\n\\n if (typeof options.ranges[range][0] === 'string')\\n start = moment(options.ranges[range][0], this.locale.format);\\n else\\n start = moment(options.ranges[range][0]);\\n\\n if (typeof options.ranges[range][1] === 'string')\\n end = moment(options.ranges[range][1], this.locale.format);\\n else\\n end = moment(options.ranges[range][1]);\\n\\n // If the start or end date exceed those allowed by the minDate or dateLimit\\n // options, shorten the range to the allowable period.\\n if (this.minDate && start.isBefore(this.minDate))\\n start = this.minDate.clone();\\n\\n var maxDate = this.maxDate;\\n if (this.dateLimit && start.clone().add(this.dateLimit).isAfter(maxDate))\\n maxDate = start.clone().add(this.dateLimit);\\n if (maxDate && end.isAfter(maxDate))\\n end = maxDate.clone();\\n\\n // If the end of the range is before the minimum or the start of the range is\\n // after the maximum, don't display this range option at all.\\n if ((this.minDate && end.isBefore(this.minDate)) || (maxDate && start.isAfter(maxDate)))\\n continue;\\n \\n //Support unicode chars in the range names.\\n var elem = document.createElement('textarea');\\n elem.innerHTML = range;\\n var rangeHtml = elem.value;\\n\\n this.ranges[rangeHtml] = [start, end];\\n }\\n\\n var list = '
    ';\\n for (range in this.ranges) {\\n list += '
  • ' + range + '
  • ';\\n }\\n list += '
  • ' + this.locale.customRangeLabel + '
  • ';\\n list += '
';\\n this.container.find('.ranges').prepend(list);\\n }\\n\\n if (typeof cb === 'function') {\\n this.callback = cb;\\n }\\n\\n if (!this.timePicker) {\\n this.startDate = this.startDate.startOf('day');\\n this.endDate = this.endDate.endOf('day');\\n this.container.find('.calendar-time').hide();\\n }\\n\\n //can't be used together for now\\n if (this.timePicker && this.autoApply)\\n this.autoApply = false;\\n\\n if (this.autoApply && typeof options.ranges !== 'object') {\\n this.container.find('.ranges').hide();\\n } else if (this.autoApply) {\\n this.container.find('.applyBtn, .cancelBtn').addClass('hide');\\n }\\n\\n if (this.singleDatePicker) {\\n this.container.addClass('single');\\n this.container.find('.calendar.left').addClass('single');\\n this.container.find('.calendar.left').show();\\n this.container.find('.calendar.right').hide();\\n this.container.find('.daterangepicker_input input, .daterangepicker_input i').hide();\\n if (!this.timePicker) {\\n this.container.find('.ranges').hide();\\n }\\n }\\n\\n if (typeof options.ranges === 'undefined' && !this.singleDatePicker) {\\n this.container.addClass('show-calendar');\\n }\\n\\n this.container.addClass('opens' + this.opens);\\n\\n //swap the position of the predefined ranges if opens right\\n if (typeof options.ranges !== 'undefined' && this.opens == 'right') {\\n var ranges = this.container.find('.ranges');\\n var html = ranges.clone();\\n ranges.remove();\\n this.container.find('.calendar.left').parent().prepend(html);\\n }\\n\\n //apply CSS classes and labels to buttons\\n this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);\\n if (this.applyClass.length)\\n this.container.find('.applyBtn').addClass(this.applyClass);\\n if (this.cancelClass.length)\\n this.container.find('.cancelBtn').addClass(this.cancelClass);\\n this.container.find('.applyBtn').html(this.locale.applyLabel);\\n this.container.find('.cancelBtn').html(this.locale.cancelLabel);\\n\\n //\\n // event listeners\\n //\\n\\n this.container.find('.calendar')\\n .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))\\n .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))\\n .on('click.daterangepicker', 'td.available', $.proxy(this.clickDate, this))\\n .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))\\n .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this))\\n .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))\\n .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))\\n .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this))\\n .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this))\\n //.on('keyup.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this))\\n .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this));\\n\\n this.container.find('.ranges')\\n .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))\\n .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))\\n .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))\\n .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this))\\n .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this));\\n\\n if (this.element.is('input')) {\\n this.element.on({\\n 'click.daterangepicker': $.proxy(this.show, this),\\n 'focus.daterangepicker': $.proxy(this.show, this),\\n 'keyup.daterangepicker': $.proxy(this.elementChanged, this),\\n 'keydown.daterangepicker': $.proxy(this.keydown, this)\\n });\\n } else {\\n this.element.on('click.daterangepicker', $.proxy(this.toggle, this));\\n }\\n\\n //\\n // if attached to a text input, set the initial value\\n //\\n\\n if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {\\n this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\\n this.element.trigger('change');\\n } else if (this.element.is('input') && this.autoUpdateInput) {\\n this.element.val(this.startDate.format(this.locale.format));\\n this.element.trigger('change');\\n }\\n\\n };\\n\\n DateRangePicker.prototype = {\\n\\n constructor: DateRangePicker,\\n\\n setStartDate: function(startDate) {\\n if (typeof startDate === 'string')\\n this.startDate = moment(startDate, this.locale.format);\\n\\n if (typeof startDate === 'object')\\n this.startDate = moment(startDate);\\n\\n if (!this.timePicker)\\n this.startDate = this.startDate.startOf('day');\\n\\n if (this.timePicker && this.timePickerIncrement)\\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\\n\\n if (this.minDate && this.startDate.isBefore(this.minDate))\\n this.startDate = this.minDate;\\n\\n if (this.maxDate && this.startDate.isAfter(this.maxDate))\\n this.startDate = this.maxDate;\\n\\n if (!this.isShowing)\\n this.updateElement();\\n\\n this.updateMonthsInView();\\n },\\n\\n setEndDate: function(endDate) {\\n if (typeof endDate === 'string')\\n this.endDate = moment(endDate, this.locale.format);\\n\\n if (typeof endDate === 'object')\\n this.endDate = moment(endDate);\\n\\n if (!this.timePicker)\\n this.endDate = this.endDate.endOf('day');\\n\\n if (this.timePicker && this.timePickerIncrement)\\n this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\\n\\n if (this.endDate.isBefore(this.startDate))\\n this.endDate = this.startDate.clone();\\n\\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\\n this.endDate = this.maxDate;\\n\\n if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate))\\n this.endDate = this.startDate.clone().add(this.dateLimit);\\n\\n this.previousRightTime = this.endDate.clone();\\n\\n if (!this.isShowing)\\n this.updateElement();\\n\\n this.updateMonthsInView();\\n },\\n\\n isInvalidDate: function() {\\n return false;\\n },\\n\\n updateView: function() {\\n if (this.timePicker) {\\n this.renderTimePicker('left');\\n this.renderTimePicker('right');\\n if (!this.endDate) {\\n this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled');\\n } else {\\n this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled');\\n }\\n }\\n if (this.endDate) {\\n this.container.find('input[name=\\\"daterangepicker_end\\\"]').removeClass('active');\\n this.container.find('input[name=\\\"daterangepicker_start\\\"]').addClass('active');\\n } else {\\n this.container.find('input[name=\\\"daterangepicker_end\\\"]').addClass('active');\\n this.container.find('input[name=\\\"daterangepicker_start\\\"]').removeClass('active');\\n }\\n this.updateMonthsInView();\\n this.updateCalendars();\\n this.updateFormInputs();\\n },\\n\\n updateMonthsInView: function() {\\n if (this.endDate) {\\n\\n //if both dates are visible already, do nothing\\n if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&\\n (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\\n &&\\n (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\\n ) {\\n return;\\n }\\n\\n this.leftCalendar.month = this.startDate.clone().date(2);\\n if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {\\n this.rightCalendar.month = this.endDate.clone().date(2);\\n } else {\\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\\n }\\n \\n } else {\\n if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {\\n this.leftCalendar.month = this.startDate.clone().date(2);\\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\\n }\\n }\\n },\\n\\n updateCalendars: function() {\\n\\n if (this.timePicker) {\\n var hour, minute, second;\\n if (this.endDate) {\\n hour = parseInt(this.container.find('.left .hourselect').val(), 10);\\n minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\\n second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\\n if (!this.timePicker24Hour) {\\n var ampm = this.container.find('.left .ampmselect').val();\\n if (ampm === 'PM' && hour < 12)\\n hour += 12;\\n if (ampm === 'AM' && hour === 12)\\n hour = 0;\\n }\\n } else {\\n hour = parseInt(this.container.find('.right .hourselect').val(), 10);\\n minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\\n second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\\n if (!this.timePicker24Hour) {\\n var ampm = this.container.find('.right .ampmselect').val();\\n if (ampm === 'PM' && hour < 12)\\n hour += 12;\\n if (ampm === 'AM' && hour === 12)\\n hour = 0;\\n }\\n }\\n this.leftCalendar.month.hour(hour).minute(minute).second(second);\\n this.rightCalendar.month.hour(hour).minute(minute).second(second);\\n }\\n\\n this.renderCalendar('left');\\n this.renderCalendar('right');\\n\\n //highlight any predefined range matching the current start and end dates\\n this.container.find('.ranges li').removeClass('active');\\n if (this.endDate == null) return;\\n\\n var customRange = true;\\n var i = 0;\\n for (var range in this.ranges) {\\n if (this.timePicker) {\\n if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) {\\n customRange = false;\\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();\\n break;\\n }\\n } else {\\n //ignore times when comparing dates if time picker is not enabled\\n if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {\\n customRange = false;\\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();\\n break;\\n }\\n }\\n i++;\\n }\\n if (customRange) {\\n this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html();\\n this.showCalendars();\\n }\\n\\n },\\n\\n renderCalendar: function(side) {\\n\\n //\\n // Build the matrix of dates that will populate the calendar\\n //\\n\\n var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;\\n var month = calendar.month.month();\\n var year = calendar.month.year();\\n var hour = calendar.month.hour();\\n var minute = calendar.month.minute();\\n var second = calendar.month.second();\\n var daysInMonth = moment([year, month]).daysInMonth();\\n var firstDay = moment([year, month, 1]);\\n var lastDay = moment([year, month, daysInMonth]);\\n var lastMonth = moment(firstDay).subtract(1, 'month').month();\\n var lastYear = moment(firstDay).subtract(1, 'month').year();\\n var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();\\n var dayOfWeek = firstDay.day();\\n\\n //initialize a 6 rows x 7 columns array for the calendar\\n var calendar = [];\\n calendar.firstDay = firstDay;\\n calendar.lastDay = lastDay;\\n\\n for (var i = 0; i < 6; i++) {\\n calendar[i] = [];\\n }\\n\\n //populate the calendar with date objects\\n var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\\n if (startDay > daysInLastMonth)\\n startDay -= 7;\\n\\n if (dayOfWeek == this.locale.firstDay)\\n startDay = daysInLastMonth - 6;\\n\\n var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);\\n\\n var col, row;\\n for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {\\n if (i > 0 && col % 7 === 0) {\\n col = 0;\\n row++;\\n }\\n calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\\n curDate.hour(12);\\n\\n if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {\\n calendar[row][col] = this.minDate.clone();\\n }\\n\\n if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {\\n calendar[row][col] = this.maxDate.clone();\\n }\\n\\n }\\n\\n //make the calendar object available to hoverDate/clickDate\\n if (side == 'left') {\\n this.leftCalendar.calendar = calendar;\\n } else {\\n this.rightCalendar.calendar = calendar;\\n }\\n\\n //\\n // Display the calendar\\n //\\n\\n var minDate = side == 'left' ? this.minDate : this.startDate;\\n var maxDate = this.maxDate;\\n var selected = side == 'left' ? this.startDate : this.endDate;\\n\\n var html = '';\\n html += '';\\n html += '';\\n\\n // add empty cell for week number\\n if (this.showWeekNumbers)\\n html += '';\\n\\n if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {\\n html += '';\\n } else {\\n html += '';\\n }\\n\\n var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(\\\" YYYY\\\");\\n\\n if (this.showDropdowns) {\\n var currentMonth = calendar[1][1].month();\\n var currentYear = calendar[1][1].year();\\n var maxYear = (maxDate && maxDate.year()) || (currentYear + 5);\\n var minYear = (minDate && minDate.year()) || (currentYear - 50);\\n var inMinYear = currentYear == minYear;\\n var inMaxYear = currentYear == maxYear;\\n\\n var monthHtml = '\\\";\\n\\n var yearHtml = '';\\n\\n dateHtml = monthHtml + yearHtml;\\n }\\n\\n html += '';\\n if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {\\n html += '';\\n } else {\\n html += '';\\n }\\n\\n html += '';\\n html += '';\\n\\n // add week number label\\n if (this.showWeekNumbers)\\n html += '';\\n\\n $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {\\n html += '';\\n });\\n\\n html += '';\\n html += '';\\n html += '';\\n\\n //adjust maxDate to reflect the dateLimit setting in order to\\n //grey out end dates beyond the dateLimit\\n if (this.endDate == null && this.dateLimit) {\\n var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day');\\n if (!maxDate || maxLimit.isBefore(maxDate)) {\\n maxDate = maxLimit;\\n }\\n }\\n\\n for (var row = 0; row < 6; row++) {\\n html += '';\\n\\n // add week number\\n if (this.showWeekNumbers)\\n html += '';\\n\\n for (var col = 0; col < 7; col++) {\\n\\n var classes = [];\\n\\n //highlight today's date\\n if (calendar[row][col].isSame(new Date(), \\\"day\\\"))\\n classes.push('today');\\n\\n //highlight weekends\\n if (calendar[row][col].isoWeekday() > 5)\\n classes.push('weekend');\\n\\n //grey out the dates in other months displayed at beginning and end of this calendar\\n if (calendar[row][col].month() != calendar[1][1].month())\\n classes.push('off');\\n\\n //don't allow selection of dates before the minimum date\\n if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))\\n classes.push('off', 'disabled');\\n\\n //don't allow selection of dates after the maximum date\\n if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))\\n classes.push('off', 'disabled');\\n\\n //don't allow selection of date if a custom function decides it's invalid\\n if (this.isInvalidDate(calendar[row][col]))\\n classes.push('off', 'disabled');\\n\\n //highlight the currently selected start date\\n if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))\\n classes.push('active', 'start-date');\\n\\n //highlight the currently selected end date\\n if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))\\n classes.push('active', 'end-date');\\n\\n //highlight dates in-between the selected dates\\n if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)\\n classes.push('in-range');\\n\\n var cname = '', disabled = false;\\n for (var i = 0; i < classes.length; i++) {\\n cname += classes[i] + ' ';\\n if (classes[i] == 'disabled')\\n disabled = true;\\n }\\n if (!disabled)\\n cname += 'available';\\n\\n html += '';\\n\\n }\\n html += '';\\n }\\n\\n html += '';\\n html += '
' + dateHtml + '
' + this.locale.weekLabel + '' + dayOfWeek + '
' + calendar[row][0].week() + '' + calendar[row][col].date() + '
';\\n\\n this.container.find('.calendar.' + side + ' .calendar-table').html(html);\\n\\n },\\n\\n renderTimePicker: function(side) {\\n\\n var html, selected, minDate, maxDate = this.maxDate;\\n\\n if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate)))\\n maxDate = this.startDate.clone().add(this.dateLimit);\\n\\n if (side == 'left') {\\n selected = this.startDate.clone();\\n minDate = this.minDate;\\n } else if (side == 'right') {\\n selected = this.endDate ? this.endDate.clone() : this.previousRightTime.clone();\\n minDate = this.startDate;\\n\\n //Preserve the time already selected\\n var timeSelector = this.container.find('.calendar.right .calendar-time div');\\n if (timeSelector.html() != '') {\\n\\n selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour());\\n selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute());\\n selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second());\\n\\n if (!this.timePicker24Hour) {\\n var ampm = timeSelector.find('.ampmselect option:selected').val();\\n if (ampm === 'PM' && selected.hour() < 12)\\n selected.hour(selected.hour() + 12);\\n if (ampm === 'AM' && selected.hour() === 12)\\n selected.hour(0);\\n }\\n\\n if (selected.isBefore(this.startDate))\\n selected = this.startDate.clone();\\n\\n if (selected.isAfter(maxDate))\\n selected = maxDate.clone();\\n\\n }\\n }\\n\\n //\\n // hours\\n //\\n\\n html = ' ';\\n\\n //\\n // minutes\\n //\\n\\n html += ': ';\\n\\n //\\n // seconds\\n //\\n\\n if (this.timePickerSeconds) {\\n html += ': ';\\n }\\n\\n //\\n // AM/PM\\n //\\n\\n if (!this.timePicker24Hour) {\\n html += '';\\n }\\n\\n this.container.find('.calendar.' + side + ' .calendar-time div').html(html);\\n\\n },\\n\\n updateFormInputs: function() {\\n\\n //ignore mouse movements while an above-calendar text input has focus\\n if (this.container.find('input[name=daterangepicker_start]').is(\\\":focus\\\") || this.container.find('input[name=daterangepicker_end]').is(\\\":focus\\\"))\\n return;\\n\\n this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format));\\n if (this.endDate)\\n this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format));\\n\\n if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {\\n this.container.find('button.applyBtn').removeAttr('disabled');\\n } else {\\n this.container.find('button.applyBtn').attr('disabled', 'disabled');\\n }\\n\\n },\\n\\n move: function() {\\n var parentOffset = { top: 0, left: 0 },\\n containerTop;\\n var parentRightEdge = $(window).width();\\n if (!this.parentEl.is('body')) {\\n parentOffset = {\\n top: this.parentEl.offset().top - this.parentEl.scrollTop(),\\n left: this.parentEl.offset().left - this.parentEl.scrollLeft()\\n };\\n parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;\\n }\\n\\n if (this.drops == 'up')\\n containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;\\n else\\n containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;\\n this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup');\\n\\n if (this.opens == 'left') {\\n this.container.css({\\n top: containerTop,\\n right: parentRightEdge - this.element.offset().left - this.element.outerWidth(),\\n left: 'auto'\\n });\\n if (this.container.offset().left < 0) {\\n this.container.css({\\n right: 'auto',\\n left: 9\\n });\\n }\\n } else if (this.opens == 'center') {\\n this.container.css({\\n top: containerTop,\\n left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2\\n - this.container.outerWidth() / 2,\\n right: 'auto'\\n });\\n if (this.container.offset().left < 0) {\\n this.container.css({\\n right: 'auto',\\n left: 9\\n });\\n }\\n } else {\\n this.container.css({\\n top: containerTop,\\n left: this.element.offset().left - parentOffset.left,\\n right: 'auto'\\n });\\n if (this.container.offset().left + this.container.outerWidth() > $(window).width()) {\\n this.container.css({\\n left: 'auto',\\n right: 0\\n });\\n }\\n }\\n },\\n\\n show: function(e) {\\n if (this.isShowing) return;\\n\\n // Create a click proxy that is private to this instance of datepicker, for unbinding\\n this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);\\n\\n // Bind global datepicker mousedown for hiding and\\n $(document)\\n .on('mousedown.daterangepicker', this._outsideClickProxy)\\n // also support mobile devices\\n .on('touchend.daterangepicker', this._outsideClickProxy)\\n // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them\\n .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)\\n // and also close when focus changes to outside the picker (eg. tabbing between controls)\\n .on('focusin.daterangepicker', this._outsideClickProxy);\\n\\n // Reposition the picker if the window is resized while it's open\\n $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));\\n\\n this.oldStartDate = this.startDate.clone();\\n this.oldEndDate = this.endDate.clone();\\n this.previousRightTime = this.endDate.clone();\\n\\n this.updateView();\\n this.container.show();\\n this.move();\\n this.element.trigger('show.daterangepicker', this);\\n this.isShowing = true;\\n },\\n\\n hide: function(e) {\\n if (!this.isShowing) return;\\n\\n //incomplete date selection, revert to last values\\n if (!this.endDate) {\\n this.startDate = this.oldStartDate.clone();\\n this.endDate = this.oldEndDate.clone();\\n }\\n\\n //if a new date range was selected, invoke the user callback function\\n if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))\\n this.callback(this.startDate, this.endDate, this.chosenLabel);\\n\\n //if picker is attached to a text input, update it\\n this.updateElement();\\n\\n $(document).off('.daterangepicker');\\n $(window).off('.daterangepicker');\\n this.container.hide();\\n this.element.trigger('hide.daterangepicker', this);\\n this.isShowing = false;\\n },\\n\\n toggle: function(e) {\\n if (this.isShowing) {\\n this.hide();\\n } else {\\n this.show();\\n }\\n },\\n\\n outsideClick: function(e) {\\n var target = $(e.target);\\n // if the page is clicked anywhere except within the daterangerpicker/button\\n // itself then call this.hide()\\n if (\\n // ie modal dialog fix\\n e.type == \\\"focusin\\\" ||\\n target.closest(this.element).length ||\\n target.closest(this.container).length ||\\n target.closest('.calendar-table').length\\n ) return;\\n this.hide();\\n },\\n\\n showCalendars: function() {\\n this.container.addClass('show-calendar');\\n this.move();\\n this.element.trigger('showCalendar.daterangepicker', this);\\n },\\n\\n hideCalendars: function() {\\n this.container.removeClass('show-calendar');\\n this.element.trigger('hideCalendar.daterangepicker', this);\\n },\\n\\n hoverRange: function(e) {\\n\\n //ignore mouse movements while an above-calendar text input has focus\\n if (this.container.find('input[name=daterangepicker_start]').is(\\\":focus\\\") || this.container.find('input[name=daterangepicker_end]').is(\\\":focus\\\"))\\n return;\\n\\n var label = e.target.innerHTML;\\n if (label == this.locale.customRangeLabel) {\\n this.updateView();\\n } else {\\n var dates = this.ranges[label];\\n this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format));\\n this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format));\\n }\\n \\n },\\n\\n clickRange: function(e) {\\n var label = e.target.innerHTML;\\n this.chosenLabel = label;\\n if (label == this.locale.customRangeLabel) {\\n this.showCalendars();\\n } else {\\n var dates = this.ranges[label];\\n this.startDate = dates[0];\\n this.endDate = dates[1];\\n\\n if (!this.timePicker) {\\n this.startDate.startOf('day');\\n this.endDate.endOf('day');\\n }\\n\\n this.hideCalendars();\\n this.clickApply();\\n }\\n },\\n\\n clickPrev: function(e) {\\n var cal = $(e.target).parents('.calendar');\\n if (cal.hasClass('left')) {\\n this.leftCalendar.month.subtract(1, 'month');\\n if (this.linkedCalendars)\\n this.rightCalendar.month.subtract(1, 'month');\\n } else {\\n this.rightCalendar.month.subtract(1, 'month');\\n }\\n this.updateCalendars();\\n },\\n\\n clickNext: function(e) {\\n var cal = $(e.target).parents('.calendar');\\n if (cal.hasClass('left')) {\\n this.leftCalendar.month.add(1, 'month');\\n } else {\\n this.rightCalendar.month.add(1, 'month');\\n if (this.linkedCalendars)\\n this.leftCalendar.month.add(1, 'month');\\n }\\n this.updateCalendars();\\n },\\n\\n hoverDate: function(e) {\\n\\n //ignore mouse movements while an above-calendar text input has focus\\n if (this.container.find('input[name=daterangepicker_start]').is(\\\":focus\\\") || this.container.find('input[name=daterangepicker_end]').is(\\\":focus\\\"))\\n return;\\n\\n //ignore dates that can't be selected\\n if (!$(e.target).hasClass('available')) return;\\n\\n //have the text inputs above calendars reflect the date being hovered over\\n var title = $(e.target).attr('data-title');\\n var row = title.substr(1, 1);\\n var col = title.substr(3, 1);\\n var cal = $(e.target).parents('.calendar');\\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\\n\\n if (this.endDate) {\\n this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format));\\n } else {\\n this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format));\\n }\\n\\n //highlight the dates between the start date and the date being hovered as a potential end date\\n var leftCalendar = this.leftCalendar;\\n var rightCalendar = this.rightCalendar;\\n var startDate = this.startDate;\\n if (!this.endDate) {\\n this.container.find('.calendar td').each(function(index, el) {\\n\\n //skip week numbers, only look at dates\\n if ($(el).hasClass('week')) return;\\n\\n var title = $(el).attr('data-title');\\n var row = title.substr(1, 1);\\n var col = title.substr(3, 1);\\n var cal = $(el).parents('.calendar');\\n var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];\\n\\n if (dt.isAfter(startDate) && dt.isBefore(date)) {\\n $(el).addClass('in-range');\\n } else {\\n $(el).removeClass('in-range');\\n }\\n\\n });\\n }\\n\\n },\\n\\n clickDate: function(e) {\\n\\n if (!$(e.target).hasClass('available')) return;\\n\\n var title = $(e.target).attr('data-title');\\n var row = title.substr(1, 1);\\n var col = title.substr(3, 1);\\n var cal = $(e.target).parents('.calendar');\\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\\n\\n //\\n // this function needs to do a few things:\\n // * alternate between selecting a start and end date for the range,\\n // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date\\n // * if autoapply is enabled, and an end date was chosen, apply the selection\\n // * if single date picker mode, and time picker isn't enabled, apply the selection immediately\\n //\\n\\n if (this.endDate || date.isBefore(this.startDate, 'day')) {\\n if (this.timePicker) {\\n var hour = parseInt(this.container.find('.left .hourselect').val(), 10);\\n if (!this.timePicker24Hour) {\\n var ampm = cal.find('.ampmselect').val();\\n if (ampm === 'PM' && hour < 12)\\n hour += 12;\\n if (ampm === 'AM' && hour === 12)\\n hour = 0;\\n }\\n var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\\n var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\\n date = date.clone().hour(hour).minute(minute).second(second);\\n }\\n this.endDate = null;\\n this.setStartDate(date.clone());\\n } else if (!this.endDate && date.isBefore(this.startDate)) {\\n //special case: clicking the same date for start/end, \\n //but the time of the end date is before the start date\\n this.setEndDate(this.startDate.clone());\\n } else {\\n if (this.timePicker) {\\n var hour = parseInt(this.container.find('.right .hourselect').val(), 10);\\n if (!this.timePicker24Hour) {\\n var ampm = this.container.find('.right .ampmselect').val();\\n if (ampm === 'PM' && hour < 12)\\n hour += 12;\\n if (ampm === 'AM' && hour === 12)\\n hour = 0;\\n }\\n var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\\n var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\\n date = date.clone().hour(hour).minute(minute).second(second);\\n }\\n this.setEndDate(date.clone());\\n if (this.autoApply)\\n this.clickApply();\\n }\\n\\n if (this.singleDatePicker) {\\n this.setEndDate(this.startDate);\\n if (!this.timePicker)\\n this.clickApply();\\n }\\n\\n this.updateView();\\n\\n },\\n\\n clickApply: function(e) {\\n this.hide();\\n this.element.trigger('apply.daterangepicker', this);\\n },\\n\\n clickCancel: function(e) {\\n this.startDate = this.oldStartDate;\\n this.endDate = this.oldEndDate;\\n this.hide();\\n this.element.trigger('cancel.daterangepicker', this);\\n },\\n\\n monthOrYearChanged: function(e) {\\n var isLeft = $(e.target).closest('.calendar').hasClass('left'),\\n leftOrRight = isLeft ? 'left' : 'right',\\n cal = this.container.find('.calendar.'+leftOrRight);\\n\\n // Month must be Number for new moment versions\\n var month = parseInt(cal.find('.monthselect').val(), 10);\\n var year = cal.find('.yearselect').val();\\n\\n if (!isLeft) {\\n if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {\\n month = this.startDate.month();\\n year = this.startDate.year();\\n }\\n }\\n\\n if (this.minDate) {\\n if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {\\n month = this.minDate.month();\\n year = this.minDate.year();\\n }\\n }\\n\\n if (this.maxDate) {\\n if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {\\n month = this.maxDate.month();\\n year = this.maxDate.year();\\n }\\n }\\n\\n if (isLeft) {\\n this.leftCalendar.month.month(month).year(year);\\n if (this.linkedCalendars)\\n this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\\n } else {\\n this.rightCalendar.month.month(month).year(year);\\n if (this.linkedCalendars)\\n this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\\n }\\n this.updateCalendars();\\n },\\n\\n timeChanged: function(e) {\\n\\n var cal = $(e.target).closest('.calendar'),\\n isLeft = cal.hasClass('left');\\n\\n var hour = parseInt(cal.find('.hourselect').val(), 10);\\n var minute = parseInt(cal.find('.minuteselect').val(), 10);\\n var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;\\n\\n if (!this.timePicker24Hour) {\\n var ampm = cal.find('.ampmselect').val();\\n if (ampm === 'PM' && hour < 12)\\n hour += 12;\\n if (ampm === 'AM' && hour === 12)\\n hour = 0;\\n }\\n\\n if (isLeft) {\\n var start = this.startDate.clone();\\n start.hour(hour);\\n start.minute(minute);\\n start.second(second);\\n this.setStartDate(start);\\n if (this.singleDatePicker) {\\n this.endDate = this.startDate.clone();\\n } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {\\n this.setEndDate(start.clone());\\n }\\n } else if (this.endDate) {\\n var end = this.endDate.clone();\\n end.hour(hour);\\n end.minute(minute);\\n end.second(second);\\n this.setEndDate(end);\\n }\\n\\n //update the calendars so all clickable dates reflect the new time component\\n this.updateCalendars();\\n\\n //update the form inputs above the calendars with the new time\\n this.updateFormInputs();\\n\\n //re-render the time pickers because changing one selection can affect what's enabled in another\\n this.renderTimePicker('left');\\n this.renderTimePicker('right');\\n\\n },\\n\\n formInputsChanged: function(e) {\\n var isRight = $(e.target).closest('.calendar').hasClass('right');\\n var start = moment(this.container.find('input[name=\\\"daterangepicker_start\\\"]').val(), this.locale.format);\\n var end = moment(this.container.find('input[name=\\\"daterangepicker_end\\\"]').val(), this.locale.format);\\n\\n if (start.isValid() && end.isValid()) {\\n\\n if (isRight && end.isBefore(start))\\n start = end.clone();\\n\\n this.setStartDate(start);\\n this.setEndDate(end);\\n\\n if (isRight) {\\n this.container.find('input[name=\\\"daterangepicker_start\\\"]').val(this.startDate.format(this.locale.format));\\n } else {\\n this.container.find('input[name=\\\"daterangepicker_end\\\"]').val(this.endDate.format(this.locale.format));\\n }\\n\\n }\\n\\n this.updateCalendars();\\n if (this.timePicker) {\\n this.renderTimePicker('left');\\n this.renderTimePicker('right');\\n }\\n },\\n\\n elementChanged: function() {\\n if (!this.element.is('input')) return;\\n if (!this.element.val().length) return;\\n if (this.element.val().length < this.locale.format.length) return;\\n\\n var dateString = this.element.val().split(this.locale.separator),\\n start = null,\\n end = null;\\n\\n if (dateString.length === 2) {\\n start = moment(dateString[0], this.locale.format);\\n end = moment(dateString[1], this.locale.format);\\n }\\n\\n if (this.singleDatePicker || start === null || end === null) {\\n start = moment(this.element.val(), this.locale.format);\\n end = start;\\n }\\n\\n if (!start.isValid() || !end.isValid()) return;\\n\\n this.setStartDate(start);\\n this.setEndDate(end);\\n this.updateView();\\n },\\n\\n keydown: function(e) {\\n //hide on tab or enter\\n if ((e.keyCode === 9) || (e.keyCode === 13)) {\\n this.hide();\\n }\\n },\\n\\n updateElement: function() {\\n if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {\\n this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\\n this.element.trigger('change');\\n } else if (this.element.is('input') && this.autoUpdateInput) {\\n this.element.val(this.startDate.format(this.locale.format));\\n this.element.trigger('change');\\n }\\n },\\n\\n remove: function() {\\n this.container.remove();\\n this.element.off('.daterangepicker');\\n this.element.removeData();\\n }\\n\\n };\\n\\n $.fn.daterangepicker = function(options, callback) {\\n this.each(function() {\\n var el = $(this);\\n if (el.data('daterangepicker'))\\n el.data('daterangepicker').remove();\\n el.data('daterangepicker', new DateRangePicker(el, options, callback));\\n });\\n return this;\\n };\\n \\n return DateRangePicker;\\n\\n}));\\n\"\n\n/***/ }\n/******/ ]);\n\n\n/** WEBPACK FOOTER **\n ** js/vendor.min.js\n **/"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n \t\twhile(callbacks.length)\n \t\t\tcallbacks.shift().call(null, __webpack_require__);\n \t\tif(moreModules[0]) {\n \t\t\tinstalledModules[0] = 0;\n \t\t\treturn __webpack_require__(0);\n \t\t}\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// \"0\" means \"already loaded\"\n \t// Array means \"loading\", array contains callbacks\n \tvar installedChunks = {\n \t\t1:0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n \t\t// \"0\" is the signal for \"already loaded\"\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn callback.call(null, __webpack_require__);\n\n \t\t// an array means \"currently loading\".\n \t\tif(installedChunks[chunkId] !== undefined) {\n \t\t\tinstalledChunks[chunkId].push(callback);\n \t\t} else {\n \t\t\t// start chunk loading\n \t\t\tinstalledChunks[chunkId] = [callback];\n \t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\tvar script = document.createElement('script');\n \t\t\tscript.type = 'text/javascript';\n \t\t\tscript.charset = 'utf-8';\n \t\t\tscript.async = true;\n\n \t\t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".js/\" + ({\"0\":\"app\"}[chunkId]||chunkId) + \".min.js\";\n \t\t\thead.appendChild(script);\n \t\t}\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 37255e536ff6d2011952\n **/","require(\"amcharts/amcharts\");\r\nrequire(\"amcharts/lang/es\");\r\nrequire(\"amcharts/pie\");\r\nrequire(\"amcharts/serial\");\r\nrequire(\"amcharts/themes/light.js\");\r\nrequire(\"amcharts/plugins/export/export.js\");\r\nrequire(\"bootstrap\");\r\nrequire(\"moment\");\r\nrequire(\"daterangepicker\");\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./vendor.js\n ** module id = 0\n ** module chunks = 1\n **/","require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\Vendor\\\\amcharts\\\\amcharts.js\"))\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../Vendor/amcharts/amcharts.js\n ** module id = 18\n ** module chunks = 1\n **/","/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\nmodule.exports = function(src) {\r\n\tif (typeof execScript === \"function\")\r\n\t\texecScript(src);\r\n\telse\r\n\t\teval.call(null, src);\r\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/script-loader/addScript.js\n ** module id = 19\n ** module chunks = 1\n **/","module.exports = \"(function(){var d;window.AmCharts?d=window.AmCharts:(d={},window.AmCharts=d,d.themes={},d.maps={},d.inheriting={},d.charts=[],d.onReadyArray=[],d.useUTC=!1,d.updateRate=60,d.uid=0,d.lang={},d.translations={},d.mapTranslations={},d.windows={},d.initHandlers=[]);d.Class=function(a){var b=function(){arguments[0]!==d.inheriting&&(this.events={},this.construct.apply(this,arguments))};a.inherits?(b.prototype=new a.inherits(d.inheriting),b.base=a.inherits.prototype,delete a.inherits):(b.prototype.createEvents=\\r\\nfunction(){for(var a=0,b=arguments.length;ad.IEversion&&0b)return a;h=-1;for(a=(k=a.split(/\\\\r\\\\n|\\\\n|\\\\r/)).length;++hb;k[h]+=d.trim(g.slice(0,f))+((g=g.slice(f)).length?c:\\\"\\\"))f=2==e||(f=g.slice(0,b+1).match(/\\\\S*(\\\\s)?$/))[1]?b:f.input.length-f[0].length||1==e&&b||f.input.length+(f=g.slice(b).match(/^\\\\S*/))[0].length;g=d.trim(g)}return k.join(c)};d.trim=function(a){return a.replace(/^[\\\\s\\\\uFEFF\\\\xA0]+|[\\\\s\\\\uFEFF\\\\xA0]+$/g,\\\"\\\")};d.wrappedText=function(a,b,c,e,h,f,g,k){var l=d.text(a,b,c,e,h,f,g);if(l){var m=l.getBBox();if(m.width>k){var n=\\\"\\\\n\\\";d.isModern||(n=\\\"
\\\");k=Math.floor(k/(m.width/\\r\\nb.length));2c&&(a=c);return a};d.isDefined=function(a){return void 0===a?!1:!0};d.stripNumbers=function(a){return a.replace(/[0-9]+/g,\\\"\\\")};d.roundTo=function(a,b){if(0>b)return a;var c=Math.pow(10,b);return Math.round(a*c)/c};d.toFixed=function(a,b){var c=String(Math.round(a*Math.pow(10,b)));if(0=g[b].contains){var l=a-Math.floor(a/g[b].contains)*g[b].contains;\\\"ss\\\"==b?(l=d.formatNumber(l,f),1==l.split(k)[0].length&&(l=\\\"0\\\"+l)):l=d.roundTo(l,f.precision);(\\\"mm\\\"==b||\\\"hh\\\"==b)&&10>l&&(l=\\\"0\\\"+l);c=l+\\\"\\\"+e[b]+\\\"\\\"+c;a=Math.floor(a/g[b].contains);b=g[b].nextInterval;return d.formatDuration(a,b,c,e,h,f)}\\\"ss\\\"==b&&(a=d.formatNumber(a,f),1==a.split(k)[0].length&&(a=\\\"0\\\"+\\r\\na));(\\\"mm\\\"==b||\\\"hh\\\"==b)&&10>a&&(a=\\\"0\\\"+a);c=a+\\\"\\\"+e[b]+\\\"\\\"+c;if(g[h].count>g[b].count)for(a=g[b].count;aa?\\\"-\\\":\\\"\\\";a=Math.abs(a);var k=String(a),l=!1;-1!=k.indexOf(\\\"e\\\")&&(l=!0);0<=c&&!l&&(k=\\r\\nd.toFixed(a,c));var m=\\\"\\\";if(l)m=k;else{var k=k.split(\\\".\\\"),l=String(k[0]),n;for(n=l.length;0<=n;n-=3)m=n!=l.length?0!==n?l.substring(n-3,n)+b+m:l.substring(n-3,n)+m:l.substring(n-3,n);void 0!==k[1]&&(m=m+f+k[1]);void 0!==c&&0=c.x-5&&a<=c.x+c.width+5&&b>=c.y-5&&b<=c.y+c.height+5?!0:!1};d.isPercents=function(a){if(-1!=String(a).indexOf(\\\"%\\\"))return!0};d.formatValue=function(a,b,c,e,h,f,g,k){if(b){void 0===h&&(h=\\\"\\\");var l;for(l=0;la&&(g=\\\"-\\\");a=Math.abs(a);if(1=b[k].number&&(l=a/b[k].number,m=Number(e.precision),1>m&&(m=1),c=d.roundTo(l,m),m=d.formatNumber(c,{precision:-1,decimalSeparator:e.decimalSeparator,thousandsSeparator:e.thousandsSeparator}),!h||l==c)){f=g+\\\"\\\"+m+\\\"\\\"+b[k].prefix;break}}else for(k=0;k\\\"==a&&(a=\\\"easeOutSine\\\");\\\"<\\\"==a&&(a=\\\"easeInSine\\\");\\\"elastic\\\"==a&&(a=\\\"easeOutElastic\\\");return a};d.getObjById=function(a,b){var c,e;for(e=0;e\\\"));return a};d.fixBrakes=function(a){if(d.isModern){var b=\\r\\nRegExp(\\\"
\\\",\\\"g\\\");a&&(a=a.replace(b,\\\"\\\\n\\\"))}else a=d.fixNewLines(a);return a};d.deleteObject=function(a,b){if(a){if(void 0===b||null===b)b=20;if(0!==b)if(\\\"[object Array]\\\"===Object.prototype.toString.call(a))for(var c=0;cb)return e/2*b*b+c;b--;return-e/2*(b*(b-2)-1)+c};d.easeInSine=function(a,b,c,e,d){return-e*Math.cos(b/d*(Math.PI/2))+e+c};d.easeOutSine=function(a,b,c,e,d){return e*Math.sin(b/d*(Math.PI/2))+c};d.easeOutElastic=function(a,b,c,e,d){a=1.70158;var f=0,g=e;if(0===b)return c;if(1==(b/=d))return c+e;f||(f=.3*d);gb?Math.abs(b)-1:Math.abs(b);var d;for(d=0;db?Number(\\\"0.\\\"+c+String(a)):Number(String(a)+c)};d.setCN=function(a,b,c,e){if(a.addClassNames&&b&&(b=b.node)&&c){var d=b.getAttribute(\\\"class\\\");a=a.classNamePrefix+\\\"-\\\";e&&(a=\\\"\\\");d?b.setAttribute(\\\"class\\\",\\r\\nd+\\\" \\\"+a+c):b.setAttribute(\\\"class\\\",a+c)}};d.parseDefs=function(a,b){for(var c in a){var e=typeof a[c];if(0a&&(a=3)):a=this.width/this.minHorizontalGap,this.gridCountR=Math.max(a,1)):this.gridCountR=this.gridCount;this.axisWidth=this.axisLine.axisWidth;this.addTitle()},setOrientation:function(a){this.orientation=a?\\\"H\\\":\\\"V\\\"},addTitle:function(){var a=this.title;this.titleLabel=null;if(a){var b=this.chart,c=this.titleColor;void 0===c&&(c=b.color);var e=this.titleFontSize;isNaN(e)&&(e=\\r\\nb.fontSize+1);a=d.text(b.container,a,c,b.fontFamily,e,this.titleAlign,this.titleBold);d.setCN(b,a,this.bcn+\\\"title\\\");this.titleLabel=a}},positionTitle:function(){var a=this.titleLabel;if(a){var b,c,e=this.labelsSet,h={};0\\r\\nthis.autoRotateCount&&!isNaN(this.autoRotateAngle)&&(this.labelRotationR=this.autoRotateAngle),a=k;a<=A;a++){p=q+z*(a+Math.floor((C-q)/z))-D;\\\"DD\\\"==B&&(p+=36E5);p=d.resetDateToMin(new Date(p),B,w,t).getTime();\\\"MM\\\"==B&&(h=(p-l)/z,1.5<=(p-l)/z&&(p=p-(h-1)*z+d.getPeriodDuration(\\\"DD\\\",3),p=d.resetDateToMin(new Date(p),B,1).getTime(),D+=z));h=(p-this.startTime)*this.stepWidth;if(\\\"radar\\\"==b.type){if(h=this.axisWidth-h,0>h||h>this.axisWidth)continue}else this.rotate?\\\"date\\\"==this.type&&\\\"middle\\\"==this.gridPosition&&\\r\\n(J=-z*this.stepWidth/2):\\\"date\\\"==this.type&&(h=this.axisWidth-h);f=!1;this.nextPeriod[g]&&(f=this.checkPeriodChange(this.nextPeriod[g],1,p,l,g));l=!1;f&&this.markPeriodChange?(f=this.dateFormatsObject[this.nextPeriod[g]],this.twoLineMode&&(f=this.dateFormatsObject[g]+\\\"\\\\n\\\"+f,f=d.fixBrakes(f)),l=!0):f=this.dateFormatsObject[g];r||(l=!1);this.currentDateFormat=f;f=d.formatDate(new Date(p),f,b);if(a==k&&!c||a==A&&!e)f=\\\" \\\";this.labelFunction&&(f=this.labelFunction(f,new Date(p),this,B,w,m).toString());\\r\\nthis.boldLabels&&(l=!0);m=new this.axisItemRenderer(this,h,f,!1,n,J,!1,l);this.pushAxisItem(m);m=l=p;if(!isNaN(u))for(h=1;hb||b>this.height)return;if(isNaN(b)){this.hideBalloon();return}b=this.adjustBalloonCoordinate(b,e);e=this.coordinateToValue(b)}else{if(0>a||a>this.width)return;if(isNaN(a)){this.hideBalloon();return}a=this.adjustBalloonCoordinate(a,e);e=this.coordinateToValue(a)}var f;if(d=this.chart.chartCursor)f=\\r\\nd.index;this.balloon&&void 0!==e&&this.balloon.enabled&&(this.balloonTextFunction?e=this.balloonTextFunction(e):this.balloonText?e=this.formatBalloonText(this.balloonText,f,c):isNaN(e)||(e=this.formatValue(e,c)),a!=this.prevBX||b!=this.prevBY)&&(this.balloon.setPosition(a,b),this.prevBX=a,this.prevBY=b,e&&this.balloon.showBalloon(e))},adjustBalloonCoordinate:function(a){return a},createBalloon:function(){var a=this.chart,b=a.chartCursor;b&&(b=b.cursorPosition,\\\"mouse\\\"!=b&&(this.stickBalloonToCategory=\\r\\n!0),\\\"start\\\"==b&&(this.stickBalloonToStart=!0),\\\"ValueAxis\\\"==this.cname&&(this.stickBalloonToCategory=!1));this.balloon&&(this.balloon.destroy&&this.balloon.destroy(),d.extend(this.balloon,a.balloon,!0))},setBalloonBounds:function(){var a=this.balloon;if(a){var b=this.chart;a.cornerRadius=0;a.shadowAlpha=0;a.borderThickness=1;a.borderAlpha=1;a.adjustBorderColor=!1;a.showBullet=!1;this.balloon=a;a.chart=b;a.mainSet=b.plotBalloonsSet;a.pointerWidth=this.tickLength;if(this.parseDates||\\\"date\\\"==this.type)a.pointerWidth=\\r\\n0;b=\\\"V\\\";\\\"V\\\"==this.orientation&&(b=\\\"H\\\");this.stickBalloonToCategory||(a.animationDuration=0);var c,e,d,f,g=this.inside,k=this.width,l=this.height;switch(this.position){case \\\"bottom\\\":c=0;e=k;g?(d=0,f=l):(d=l,f=l+1E3);break;case \\\"top\\\":c=0;e=k;g?(d=0,f=l):(d=-1E3,f=0);break;case \\\"left\\\":d=0;f=l;g?(c=0,e=k):(c=-1E3,e=0);break;case \\\"right\\\":d=0,f=l,g?(c=0,e=k):(c=k,e=k+1E3)}a.drop||(a.pointerOrientation=b);a.setBounds(c,d,e,f)}}})})();(function(){var d=window.AmCharts;d.ValueAxis=d.Class({inherits:d.AxisBase,construct:function(a){this.cname=\\\"ValueAxis\\\";this.createEvents(\\\"axisChanged\\\",\\\"logarithmicAxisFailed\\\",\\\"axisZoomed\\\");d.ValueAxis.base.construct.call(this,a);this.dataChanged=!0;this.stackType=\\\"none\\\";this.position=\\\"left\\\";this.unitPosition=\\\"right\\\";this.includeAllValues=this.recalculateToPercents=this.includeHidden=this.includeGuidesInMinMax=this.integersOnly=!1;this.durationUnits={DD:\\\"d. \\\",hh:\\\":\\\",mm:\\\":\\\",ss:\\\"\\\"};this.scrollbar=!1;\\r\\nthis.baseValue=0;this.radarCategoriesEnabled=!0;this.gridType=\\\"polygons\\\";this.useScientificNotation=!1;this.axisTitleOffset=10;this.pointPosition=\\\"axis\\\";this.minMaxMultiplier=1;this.logGridLimit=2;this.totalTextOffset=this.treatZeroAs=0;this.minPeriod=\\\"ss\\\";this.relativeStart=0;this.relativeEnd=1;d.applyTheme(this,a,this.cname)},updateData:function(){0>=this.gridCountR&&(this.gridCountR=1);this.totals=[];this.data=this.chart.chartData;var a=this.chart;\\\"xy\\\"!=a.type&&(this.stackGraphs(\\\"smoothedLine\\\"),\\r\\nthis.stackGraphs(\\\"line\\\"),this.stackGraphs(\\\"column\\\"),this.stackGraphs(\\\"step\\\"));this.recalculateToPercents&&this.recalculate();this.synchronizationMultiplier&&this.synchronizeWith?(d.isString(this.synchronizeWith)&&(this.synchronizeWith=a.getValueAxisById(this.synchronizeWith)),this.synchronizeWith&&(this.synchronizeWithAxis(this.synchronizeWith),this.foundGraphs=!0)):(this.foundGraphs=!1,this.getMinMax(),0===this.start&&this.end==this.data.length-1&&isNaN(this.minZoom)&&isNaN(this.maxZoom)&&(this.fullMin=\\r\\nthis.min,this.fullMax=this.max,\\\"date\\\"!=this.type&&(isNaN(this.minimum)||(this.fullMin=this.minimum),isNaN(this.maximum)||(this.fullMax=this.maximum)),this.logarithmic&&(this.fullMin=this.logMin,0===this.fullMin&&(this.fullMin=this.treatZeroAs)),\\\"date\\\"==this.type&&(this.minimumDate||(this.fullMin=this.minRR),this.maximumDate||(this.fullMax=this.maxRR))))},draw:function(){d.ValueAxis.base.draw.call(this);var a=this.chart,b=this.set;this.labelRotationR=this.labelRotation;d.setCN(a,this.set,\\\"value-axis value-axis-\\\"+\\r\\nthis.id);d.setCN(a,this.labelsSet,\\\"value-axis value-axis-\\\"+this.id);d.setCN(a,this.axisLine.axisSet,\\\"value-axis value-axis-\\\"+this.id);var c=this.type;\\\"duration\\\"==c&&(this.duration=\\\"ss\\\");!0===this.dataChanged&&(this.updateData(),this.dataChanged=!1);\\\"date\\\"==c&&(this.logarithmic=!1,this.min=this.minRR,this.max=this.maxRR,this.reversed=!1,this.getDateMinMax());if(this.logarithmic){var e=this.treatZeroAs,h=this.getExtremes(0,this.data.length-1).min;this.logMin=h;this.minReal=h||0>=this.minimum){this.fire({type:\\\"logarithmicAxisFailed\\\",chart:a});return}}this.grid0=null;var f,g,k=a.dx,l=a.dy,e=!1,h=this.logarithmic;if(isNaN(this.min)||isNaN(this.max)||!this.foundGraphs||Infinity==this.min||-Infinity==this.max)e=!0;else{var m=this.labelFrequency,n=this.showFirstLabel,q=this.showLastLabel,p=1;f=0;this.minCalc=this.min;this.maxCalc=this.max;this.strictMinMax&&(isNaN(this.minimum)||(this.min=this.minimum),isNaN(this.maximum)||\\r\\n(this.max=this.maximum));isNaN(this.minZoom)||(this.minReal=this.min=this.minZoom);isNaN(this.maxZoom)||(this.max=this.maxZoom);if(this.logarithmic){var t=Math.log(this.fullMax)*Math.LOG10E-Math.log(this.fullMin)*Math.LOG10E,r=Math.log(this.max)/Math.LN10-Math.log(this.fullMin)*Math.LOG10E;this.relativeStart=(Math.log(this.minReal)/Math.LN10-Math.log(this.fullMin)*Math.LOG10E)/t;this.relativeEnd=r/t}else this.relativeStart=d.fitToBounds((this.min-this.fullMin)/(this.fullMax-this.fullMin),0,1),this.relativeEnd=\\r\\nd.fitToBounds((this.max-this.fullMin)/(this.fullMax-this.fullMin),0,1);var t=Math.round((this.maxCalc-this.minCalc)/this.step)+1,u;!0===h?(u=Math.log(this.max)*Math.LOG10E-Math.log(this.minReal)*Math.LOG10E,this.stepWidth=this.axisWidth/u,u>this.logGridLimit&&(t=Math.ceil(Math.log(this.max)*Math.LOG10E)+1,f=Math.round(Math.log(this.minReal)*Math.LOG10E),t>this.gridCountR&&(p=Math.ceil(t/this.gridCountR)))):this.stepWidth=this.axisWidth/(this.max-this.min);var y=0;1>this.step&&-1this.maxDecCount&&(y=this.maxDecCount);r=this.precision;isNaN(r)||(y=r);isNaN(this.maxZoom)&&(this.max=d.roundTo(this.max,this.maxDecCount),this.min=d.roundTo(this.min,this.maxDecCount));g={};g.precision=y;g.decimalSeparator=a.nf.decimalSeparator;g.thousandsSeparator=a.nf.thousandsSeparator;this.numberFormatter=g;var x,w=this.guides,B=w.length;if(0=this.autoRotateCount&&!isNaN(this.autoRotateAngle)&&(this.labelRotationR=\\r\\nthis.autoRotateAngle),h&&t++,g=f;gthis.logGridLimit&&(c=Math.pow(10,g)));x=this.formatValue(c,!1,g);Math.round(g/m)!=g/m&&(x=void 0);if(0===g&&!n||g==t-1&&!q)x=\\\" \\\";f=this.getCoordinate(c);var R;this.rotate&&this.autoWrap&&(R=this.stepWidth*y-10);x=new this.axisItemRenderer(this,f,x,void 0,R,void 0,void 0,this.boldLabels);this.pushAxisItem(x);\\r\\nif(c==this.baseValue&&\\\"radar\\\"!=a.type){var L,P;x=this.width;B=this.height;\\\"H\\\"==this.orientation?0<=f&&f<=x+1&&(L=[f,f,f+k],P=[B,0,l]):0<=f&&f<=B+1&&(L=[0,x,x+k],P=[f,f,f+l]);L&&(f=d.fitToBounds(2*this.gridAlpha,0,1),isNaN(this.zeroGridAlpha)||(f=this.zeroGridAlpha),f=d.line(a.container,L,P,this.gridColor,f,1,this.dashLength),f.translate(this.x,this.y),this.grid0=f,a.axesSet.push(f),f.toBack(),d.setCN(a,f,this.bcn+\\\"zero-grid-\\\"+this.id),d.setCN(a,f,this.bcn+\\\"zero-grid\\\"))}if(!isNaN(H)&&0this.logGridLimit&&(H=Math.pow(10,g+p)),f=10,H=(H-c)/f);x=this.gridAlpha;this.gridAlpha=this.minorGridAlpha;for(B=1;Bthis.baseValue&&this.max>this.baseValue&&(u=this.min);this.minc&&(f.precision=Math.abs(c)),b&&1b&&c.shift();for(var e=Math.floor(Math.log(Math.abs(a))*Math.LOG10E),d=0;da){if(g=Math.pow(10,-g)*f,g==Math.round(g))return f}else if(f==Math.round(f))return f}},stackGraphs:function(a){var b=this.stackType;\\\"stacked\\\"==b&&(b=\\\"regular\\\");\\\"line\\\"==b&&(b=\\\"none\\\");\\\"100% stacked\\\"==b&&(b=\\\"100%\\\");this.stackType=b;var c=[],e=[],h=[],f=[],g,k=this.chart.graphs,l,m,n,q,p,t=this.baseValue,r=!1;if(\\\"line\\\"==a||\\\"step\\\"==a||\\\"smoothedLine\\\"==a)r=!0;if(r&&(\\\"regular\\\"==b||\\\"100%\\\"==b))for(q=0;qg?(m.values.close=g,isNaN(e[p])?m.values.open=t:(m.values.close+=e[p],m.values.open=e[p]),e[p]=m.values.close):(m.values.close=\\r\\ng,isNaN(h[p])?m.values.open=t:(m.values.close+=h[p],m.values.open=h[p]),h[p]=m.values.close)))}}for(p=this.start;p<=this.end;p++)for(q=0;qc?(m.values.close=\\r\\nd.fitToBounds(c+e[p],-100,100),m.values.open=e[p],e[p]=m.values.close):(m.values.close=d.fitToBounds(c+h[p],-100,100),m.values.open=h[p],h[p]=m.values.close)))))},recalculate:function(){var a=this.chart,b=a.graphs,c;for(c=0;cq&&g++}if(m=a.recalculateFromDate)m=d.getDate(m,a.dataDateFormat,\\\"fff\\\"),g=a.getClosestIndex(a.chartData,\\\"time\\\",m.getTime(),!0,0,a.chartData.length),k=a.chartData.length-1;for(m=g;m<=k&&(g=this.data[m].axes[this.id].graphs[e.id],f=g.values[h],e.recalculateValue&&(f=g.dataContext[e.valueField+e.recalculateValue]),isNaN(f));m++);\\r\\nthis.recBaseValue=f;for(h=l;h<=k;h++){g=this.data[h].axes[this.id].graphs[e.id];g.percents={};var l=g.values,p;for(p in l)g.percents[p]=\\\"percents\\\"!=p?l[p]/f*100-100:l[p]}}}},getMinMax:function(){var a=!1,b=this.chart,c=b.graphs,e;for(e=0;ethis.max&&(this.max=c.toValue),c.value>this.max&&(this.max=c.value);isNaN(this.minimum)||\\r\\n(this.min=this.minimum);isNaN(this.maximum)||(this.max=this.maximum);\\\"date\\\"==this.type&&this.getDateMinMax();this.min>this.max&&(a=this.max,this.max=this.min,this.min=a);isNaN(this.minZoom)||(this.min=this.minZoom);isNaN(this.maxZoom)||(this.max=this.maxZoom);this.minCalc=this.min;this.maxCalc=this.max;this.minReal=this.min;this.maxReal=this.max;0===this.min&&0===this.max&&(this.max=9);this.min>this.max&&(this.min=this.max-1);a=this.min;b=this.max;c=this.max-this.min;e=0===c?Math.pow(10,Math.floor(Math.log(Math.abs(this.max))*\\r\\nMath.LOG10E))/10:Math.pow(10,Math.floor(Math.log(Math.abs(c))*Math.LOG10E))/10;isNaN(this.maximum)&&(this.max=Math.ceil(this.max/e)*e+e);isNaN(this.minimum)&&(this.min=Math.floor(this.min/e)*e-e);0>this.min&&0<=a&&(this.min=0);0=b&&(this.max=0);\\\"100%\\\"==this.stackType&&(this.min=0>this.min?-100:0,this.max=0>this.max?0:100);c=this.max-this.min;e=Math.pow(10,Math.floor(Math.log(Math.abs(c))*Math.LOG10E))/10;this.step=Math.ceil(c/this.gridCountR/e)*e;c=Math.pow(10,Math.floor(Math.log(Math.abs(this.step))*\\r\\nMath.LOG10E));c=d.fixStepE(c);e=Math.ceil(this.step/c);5=e&&2c?(this.maxDecCount=Math.abs(Math.log(Math.abs(c))*Math.LOG10E),this.maxDecCount=Math.round(this.maxDecCount),this.step=d.roundTo(this.step,this.maxDecCount+1)):this.maxDecCount=0;this.min=this.step*Math.floor(this.min/this.step);this.max=this.step*Math.ceil(this.max/this.step);0>this.min&&0<=a&&(this.min=0);0=b&&(this.max=0);1e&&(e=l);else for(var m in k)k.hasOwnProperty(m)&&\\\"percents\\\"!=m&&\\\"total\\\"!=m&&(l=k[m],le&&(e=l))}}}return{min:c,max:e}},zoomOut:function(){this.zoomToRelativeValues(0,1);this.maxZoom=this.minZoom=NaN},zoomToRelativeValues:function(a,b,c){if(this.reversed){var e=a;a=1-b;b=1-e}var d=this.fullMax,e=this.fullMin,f=e+(d-e)*a,g=e+(d-e)*b;this.logarithmic&&(d=Math.log(d)*Math.LOG10E-Math.log(e)*Math.LOG10E,f=Math.pow(10,\\r\\nd*a+Math.log(e)*Math.LOG10E),g=Math.pow(10,d*b+Math.log(e)*Math.LOG10E));return this.zoomToValues(f,g,c)},zoomToValues:function(a,b,c){if(bn?(v=X+ha*Math.sin(T)-A-3+2,G+=-ha*Math.cos(T)-Pa*Math.sin(T)-4):v-=A+r+3+3,v-=Z):(0n?(v=X+A+3-ha/2*Math.sin(T)+2,G+=ha/2*Math.cos(T)):v+=A+w+3+3,v+=Z)):(v+=la+r/2-da,G+=va,I?(0ya+2||0>f))ba.remove(),ba=null}else{0<=b&&b<=X+1&&(0X+1||vc&&\\\"object\\\"==typeof n&&(n=n.join(\\\",\\\").split(\\\",\\\").reverse());\\\"V\\\"==g?(g=d.rect(l,a.width,c,n,m),g.translate(h,b-k+f)):(g=d.rect(l,\\r\\nc,a.height,n,m),g.translate(b-k+h,f));d.setCN(a.chart,g,\\\"guide-fill\\\");e.id&&d.setCN(a.chart,g,\\\"guide-fill-\\\"+e.id);this.set=l.set([g])},graphics:function(){return this.set},getLabel:function(){}})})();(function(){var d=window.AmCharts;d.AmChart=d.Class({construct:function(a){this.svgIcons=this.tapToActivate=!0;this.theme=a;this.classNamePrefix=\\\"amcharts\\\";this.addClassNames=!1;this.version=\\\"3.18.6\\\";d.addChart(this);this.createEvents(\\\"buildStarted\\\",\\\"dataUpdated\\\",\\\"init\\\",\\\"rendered\\\",\\\"drawn\\\",\\\"failed\\\",\\\"resized\\\",\\\"animationFinished\\\");this.height=this.width=\\\"100%\\\";this.dataChanged=!0;this.chartCreated=!1;this.previousWidth=this.previousHeight=0;this.backgroundColor=\\\"#FFFFFF\\\";this.borderAlpha=this.backgroundAlpha=\\r\\n0;this.color=this.borderColor=\\\"#000000\\\";this.fontFamily=\\\"Verdana\\\";this.fontSize=11;this.usePrefixes=!1;this.autoResize=!0;this.autoDisplay=!1;this.addCodeCredits=!0;this.precision=-1;this.percentPrecision=2;this.decimalSeparator=\\\".\\\";this.thousandsSeparator=\\\",\\\";this.labels=[];this.allLabels=[];this.titles=[];this.marginRight=this.marginLeft=this.autoMarginOffset=0;this.timeOuts=[];this.creditsPosition=\\\"top-left\\\";var b=document.createElement(\\\"div\\\"),c=b.style;c.overflow=\\\"hidden\\\";c.position=\\\"relative\\\";\\r\\nc.textAlign=\\\"left\\\";this.chartDiv=b;b=document.createElement(\\\"div\\\");c=b.style;c.overflow=\\\"hidden\\\";c.position=\\\"relative\\\";c.textAlign=\\\"left\\\";this.legendDiv=b;this.titleHeight=0;this.hideBalloonTime=150;this.handDrawScatter=2;this.handDrawThickness=1;this.prefixesOfBigNumbers=[{number:1E3,prefix:\\\"k\\\"},{number:1E6,prefix:\\\"M\\\"},{number:1E9,prefix:\\\"G\\\"},{number:1E12,prefix:\\\"T\\\"},{number:1E15,prefix:\\\"P\\\"},{number:1E18,prefix:\\\"E\\\"},{number:1E21,prefix:\\\"Z\\\"},{number:1E24,prefix:\\\"Y\\\"}];this.prefixesOfSmallNumbers=[{number:1E-24,\\r\\nprefix:\\\"y\\\"},{number:1E-21,prefix:\\\"z\\\"},{number:1E-18,prefix:\\\"a\\\"},{number:1E-15,prefix:\\\"f\\\"},{number:1E-12,prefix:\\\"p\\\"},{number:1E-9,prefix:\\\"n\\\"},{number:1E-6,prefix:\\\"\\\\u03bc\\\"},{number:.001,prefix:\\\"m\\\"}];this.panEventsEnabled=!0;this.product=\\\"amcharts\\\";this.animations=[];this.balloon=new d.AmBalloon(this.theme);this.balloon.chart=this;this.processTimeout=0;this.processCount=1E3;this.animatable=[];d.applyTheme(this,a,\\\"AmChart\\\")},drawChart:function(){0a||isNaN(a))a=0;this.chartDiv.style.height=a+\\\"px\\\"}}return a},updateWidth:function(){var a=this.divRealWidth,\\r\\nb=this.divRealHeight,c=this.legend;if(c){var e=this.legendDiv,d=e.offsetWidth;isNaN(c.width)||(d=c.width);c.ieW&&(d=c.ieW);var f=e.offsetHeight,e=e.style,g=this.chartDiv.style,c=c.position;if(\\\"right\\\"==c||\\\"left\\\"==c){a-=d;if(0>a||isNaN(a))a=0;g.width=a+\\\"px\\\";this.balloon.setBounds(2,2,a-2,this.realHeight);\\\"left\\\"==c?(g.left=d+\\\"px\\\",e.left=\\\"0px\\\"):(g.left=\\\"0px\\\",e.left=a+\\\"px\\\");b>f&&(e.top=(b-f)/2+\\\"px\\\")}}return a},getTitleHeight:function(){this.drawTitles(!0);return this.titleHeight},addTitle:function(a,b,\\r\\nc,e,d){isNaN(b)&&(b=this.fontSize+2);a={text:a,size:b,color:c,alpha:e,bold:d,enabled:!0};this.titles.push(a);return a},handleWheel:function(a){var b=0;a||(a=window.event);a.wheelDelta?b=a.wheelDelta/120:a.detail&&(b=-a.detail/3);b&&this.handleWheelReal(b,a.shiftKey);a.preventDefault&&a.preventDefault()},handleWheelReal:function(){},handleDocTouchStart:function(){this.hideBalloonReal();this.handleMouseMove();this.tmx=this.mouseX;this.tmy=this.mouseY},handleDocTouchEnd:function(){-.5Math.abs(this.mouseX-this.tmx)&&4>Math.abs(this.mouseY-this.tmy)&&(this.tapped=!0)):this.tapped=!1},addListeners:function(){var a=this,b=a.chartDiv;document.addEventListener?(a.panEventsEnabled&&(b.style.msTouchAction=\\\"none\\\",b.style.touchAction=\\\"none\\\"),\\\"ontouchstart\\\"in document.documentElement&&(b.addEventListener(\\\"touchstart\\\",function(b){a.handleTouchStart.call(a,b)},!0),b.addEventListener(\\\"touchmove\\\",function(b){a.handleMouseMove.call(a,\\r\\nb)},!0),b.addEventListener(\\\"touchend\\\",function(b){a.handleTouchEnd.call(a,b)},!0),document.addEventListener(\\\"touchstart\\\",function(b){a.handleDocTouchStart.call(a,b)}),document.addEventListener(\\\"touchend\\\",function(b){a.handleDocTouchEnd.call(a,b)})),b.addEventListener(\\\"mousedown\\\",function(b){a.mouseIsOver=!0;a.handleMouseMove.call(a,b);a.handleMouseDown.call(a,b)},!0),b.addEventListener(\\\"mouseover\\\",function(b){a.handleMouseOver.call(a,b)},!0),b.addEventListener(\\\"mouseout\\\",function(b){a.handleMouseOut.call(a,\\r\\nb)},!0)):(b.attachEvent(\\\"onmousedown\\\",function(b){a.handleMouseDown.call(a,b)}),b.attachEvent(\\\"onmouseover\\\",function(b){a.handleMouseOver.call(a,b)}),b.attachEvent(\\\"onmouseout\\\",function(b){a.handleMouseOut.call(a,b)}))},dispDUpd:function(){this.skipEvents||(this.dispatchDataUpdated&&(this.dispatchDataUpdated=!1,this.fire({type:\\\"dataUpdated\\\",chart:this})),this.chartCreated||(this.chartCreated=!0,this.fire({type:\\\"init\\\",chart:this})),this.chartRendered||(this.fire({type:\\\"rendered\\\",chart:this}),this.chartRendered=\\r\\n!0),this.fire({type:\\\"drawn\\\",chart:this}));this.skipEvents=!1},validateSize:function(){var a=this;a.premeasure();a.checkDisplay();if(a.divRealWidth!=a.previousWidth||a.divRealHeight!=a.previousHeight){var b=a.legend;if(0a.valueAxis.minMaxMultiplier&&a.positiveClip(a.set));break;case \\\"radar\\\":a.createRadarGraph();break;case \\\"xy\\\":a.createXYGraph(),a.positiveClip(a.set)}a.playedTO=setTimeout(function(){a.setAnimationPlayed.call(a)},500*a.chart.startDuration)}},setAnimationPlayed:function(){this.animationPlayed=!0},createXYGraph:function(){var a=[],b=[],c=this.xAxis,e=this.yAxis;this.pmh=e.height;this.pmw=\\r\\nc.width;this.pmy=this.pmx=0;var d;for(d=this.start;d<=this.end;d++){var f=this.data[d].axes[c.id].graphs[this.id],g=f.values,k=g.x,l=g.y,g=c.getCoordinate(k,this.noRounding),m=e.getCoordinate(l,this.noRounding);if(!isNaN(k)&&!isNaN(l)&&(a.push(g),b.push(m),f.x=g,f.y=m,k=this.createBullet(f,g,m,d),l=this.labelText)){var l=this.createLabel(f,l),n=0;k&&(n=k.size);this.positionLabel(f,g,m,l,n)}}this.drawLineGraph(a,b);this.launchAnimation()},createRadarGraph:function(){var a=this.valueAxis.stackType,\\r\\nb=[],c=[],e=[],d=[],f,g,k,l,m;for(m=this.start;m<=this.end;m++){var n=this.data[m].axes[this.valueAxis.id].graphs[this.id],q,p;\\\"none\\\"==a||\\\"3d\\\"==a?q=n.values.value:(q=n.values.close,p=n.values.open);if(isNaN(q))this.connect||(this.drawLineGraph(b,c,e,d),b=[],c=[],e=[],d=[]);else{var t=this.valueAxis.getCoordinate(q,this.noRounding)-this.height,t=t*this.valueAxis.rMultiplier,r=-360/(this.end-this.start+1)*m;\\\"middle\\\"==this.valueAxis.pointPosition&&(r-=180/(this.end-this.start+1));q=t*Math.sin(r/180*\\r\\nMath.PI);t*=Math.cos(r/180*Math.PI);b.push(q);c.push(t);if(!isNaN(p)){var u=this.valueAxis.getCoordinate(p,this.noRounding)-this.height,u=u*this.valueAxis.rMultiplier,y=u*Math.sin(r/180*Math.PI),r=u*Math.cos(r/180*Math.PI);e.push(y);d.push(r);isNaN(k)&&(k=y);isNaN(l)&&(l=r)}r=this.createBullet(n,q,t,m);n.x=q;n.y=t;if(y=this.labelText)y=this.createLabel(n,y),u=0,r&&(u=r.size),this.positionLabel(n,q,t,y,u);isNaN(f)&&(f=q);isNaN(g)&&(g=t)}}b.push(f);c.push(g);isNaN(k)||(e.push(k),d.push(l));this.drawLineGraph(b,\\r\\nc,e,d);this.launchAnimation()},positionLabel:function(a,b,c,e,d){if(e){var f=this.chart,g=this.valueAxis,k=\\\"middle\\\",l=!1,m=this.labelPosition,n=e.getBBox(),q=this.chart.rotate,p=a.isNegative;c-=n.height/4/2;void 0!==a.labelIsNegative&&(p=a.labelIsNegative);switch(m){case \\\"right\\\":m=q?p?\\\"left\\\":\\\"right\\\":\\\"right\\\";break;case \\\"top\\\":m=q?\\\"top\\\":p?\\\"bottom\\\":\\\"top\\\";break;case \\\"bottom\\\":m=q?\\\"bottom\\\":p?\\\"top\\\":\\\"bottom\\\";break;case \\\"left\\\":m=q?p?\\\"right\\\":\\\"left\\\":\\\"left\\\"}var t=a.columnGraphics,r=0,u=0;t&&(r=t.x,u=t.y);var y=\\r\\nthis.labelOffset;switch(m){case \\\"right\\\":k=\\\"start\\\";b+=d/2+y;break;case \\\"top\\\":c=g.reversed?c+(d/2+n.height/2+y):c-(d/2+n.height/2+y);break;case \\\"bottom\\\":c=g.reversed?c-(d/2+n.height/2+y):c+(d/2+n.height/2+y);break;case \\\"left\\\":k=\\\"end\\\";b-=d/2+y;break;case \\\"inside\\\":\\\"column\\\"==this.type&&(l=!0,q?p?(k=\\\"end\\\",b=r-3-y):(k=\\\"start\\\",b=r+3+y):c=p?u+7+y:u-10-y);break;case \\\"middle\\\":\\\"column\\\"==this.type&&(l=!0,q?b-=(b-r)/2+y-3:c-=(c-u)/2+y-3)}\\\"auto\\\"!=this.labelAnchor&&(k=this.labelAnchor);e.attr({\\\"text-anchor\\\":k});\\r\\nthis.labelRotation&&e.rotate(this.labelRotation);e.translate(b,c);!this.showAllValueLabels&&t&&l&&(n=e.getBBox(),n.height>a.columnHeight||n.width>a.columnWidth)&&(e.remove(),e=null);e&&(0>b||b>this.width||0>c||c>this.height)&&(e.remove(),e=null);if(e&&(\\\"serial\\\"==f.type||\\\"gantt\\\"==f.type))if(q){if(0>c||c>this.height)e.remove(),e=null}else if(0>b||b>this.width)e.remove(),e=null;e&&this.allBullets.push(e);return e}},getGradRotation:function(){var a=270;\\\"horizontal\\\"==this.gradientOrientation&&(a=0);return this.gradientRotation=\\r\\na},createSerialGraph:function(){this.dashLengthSwitched=this.fillColorsSwitched=this.lineColorSwitched=void 0;var a=this.chart,b=this.id,c=this.index,e=this.data,h=this.chart.container,f=this.valueAxis,g=this.type,k=this.columnWidthReal,l=this.showBulletsAt;isNaN(this.columnWidth)||(k=this.columnWidth);isNaN(k)&&(k=.8);var m=this.useNegativeColorIfDown,n=this.width,q=this.height,p=this.y,t=this.rotate,r=this.columnCount,u=d.toCoordinate(this.cornerRadiusTop,k/2),y=this.connect,x=[],w=[],B,z,A,C,D=\\r\\nthis.chart.graphs.length,J,H=this.dx/this.tcc,R=this.dy/this.tcc,L=f.stackType,P=this.start,ia=this.end,I=this.scrollbar,Z=\\\"graph-column-\\\";I&&(Z=\\\"scrollbar-graph-column-\\\");var va=this.categoryAxis,la=this.baseCoord,Oa=this.negativeBase,ea=this.columnIndex,ca=this.lineThickness,X=this.lineAlpha,ya=this.lineColorR,da=this.dashLength,fa=this.set,za,ga=this.getGradRotation(),T=this.chart.columnSpacing,Y=va.cellWidth,Ca=(Y*k-r)/r;T>Ca&&(T=Ca);var G,v,ma,ha=q,Pa=n,ba=0,tb=0,ub,vb,gb,hb,wb=this.fillColorsR,\\r\\nQa=this.negativeFillColors,Ja=this.negativeLineColor,Ya=this.fillAlphas,Za=this.negativeFillAlphas;\\\"object\\\"==typeof Ya&&(Ya=Ya[0]);\\\"object\\\"==typeof Za&&(Za=Za[0]);var xb=this.noRounding;\\\"step\\\"==g&&(xb=!1);var ib=f.getCoordinate(f.min);f.logarithmic&&(ib=f.getCoordinate(f.minReal));this.minCoord=ib;this.resetBullet&&(this.bullet=\\\"none\\\");if(!(I||\\\"line\\\"!=g&&\\\"smoothedLine\\\"!=g&&\\\"step\\\"!=g||(1==e.length&&\\\"step\\\"!=g&&\\\"none\\\"==this.bullet&&(this.bullet=\\\"round\\\",this.resetBullet=!0),!Qa&&void 0==Ja||m))){var Ua=\\r\\nOa;Ua>f.max&&(Ua=f.max);Uak&&(k=1);var Ob=this.fixedColumnWidth;isNaN(Ob)||(k=Ob);var M;if(\\\"line\\\"==g||\\\"step\\\"==g||\\\"smoothedLine\\\"==g){if(0W?!0:!1);if(!I)switch(this.showBalloonAt){case \\\"close\\\":v.y=F;break;case \\\"open\\\":v.y=N;break;case \\\"high\\\":v.y=sa;break;case \\\"low\\\":v.y=qa}var na=G.x[va.id],Wa=this.periodSpan-1;\\\"step\\\"!=g||isNaN(G.cellWidth)||(Y=G.cellWidth);var xa=Math.floor(Y/2)+Math.floor(Wa*Y/2),Ga=xa,nb=0;\\\"left\\\"==this.stepDirection&&(nb=(2*Y+Wa*Y)/2,na-=nb);\\\"center\\\"==this.stepDirection&&(nb=Y/2,na-=nb);\\\"start\\\"==this.pointPosition&&(na-=Y/2+Math.floor(Wa*Y/2),xa=0,Ga=Math.floor(Y)+\\r\\nMath.floor(Wa*Y));\\\"end\\\"==this.pointPosition&&(na+=Y/2+Math.floor(Wa*Y/2),xa=Math.floor(Y)+Math.floor(Wa*Y),Ga=0);if(Pb){var Eb=this.columnWidth;isNaN(Eb)||(xa*=Eb,Ga*=Eb)}I||(v.x=na);-1E5>na&&(na=-1E5);na>n+1E5&&(na=n+1E5);t?(E=F,O=N,N=F=na,isNaN(ta)&&!this.fillToGraph&&(O=la),pa=qa,ra=sa):(O=E=na,isNaN(ta)&&!this.fillToGraph&&(N=la));if(!Db&&WTa?(Sa&&($a=!0),Sa=!1):(Sa||($a=!0),Sa=!0):v.isNegative=W=lb||Math.abs(F-kb)>=lb)x.push(E),w.push(F),jb=E,kb=F;wa=E;Da=F;ja=E;ka=F;!Ra||isNaN(N)||isNaN(O)||(U.push(O),V.push(N));if($a||void 0!=v.lineColor&&v.lineColor!=this.lineColorSwitched||void 0!=v.fillColors&&v.fillColors!=this.fillColorsSwitched||!isNaN(v.dashLength))this.drawLineGraph(x,\\r\\nw,U,V),x=[E],w=[F],U=[],V=[],!Ra||isNaN(N)||isNaN(O)||(U.push(O),V.push(N)),m?Sa?(this.lineColorSwitched=ya,this.fillColorsSwitched=wb):(this.lineColorSwitched=Ja,this.fillColorsSwitched=Qa):(this.lineColorSwitched=v.lineColor,this.fillColorsSwitched=v.fillColors),this.dashLengthSwitched=v.dashLength;v.gap&&(this.drawLineGraph(x,w,U,V),x=[],w=[],U=[],V=[])}break;case \\\"smoothedLine\\\":if(isNaN(W))y||(this.drawSmoothedGraph(x,w,U,V),x=[],w=[],U=[],V=[]);else{if(Math.abs(E-jb)>=lb||Math.abs(F-kb)>=lb)x.push(E),\\r\\nw.push(F),jb=E,kb=F;wa=E;Da=F;ja=E;ka=F;!Ra||isNaN(N)||isNaN(O)||(U.push(O),V.push(N));void 0==v.lineColor&&void 0==v.fillColors&&isNaN(v.dashLength)||(this.drawSmoothedGraph(x,w,U,V),x=[E],w=[F],U=[],V=[],!Ra||isNaN(N)||isNaN(O)||(U.push(O),V.push(N)),this.lineColorSwitched=v.lineColor,this.fillColorsSwitched=v.fillColors,this.dashLengthSwitched=v.dashLength);v.gap&&(this.drawSmoothedGraph(x,w,U,V),x=[],w=[],U=[],V=[])}break;case \\\"step\\\":if(!isNaN(W)){t?(isNaN(B)||(x.push(B),w.push(F-xa)),w.push(F-\\r\\nxa),x.push(E),w.push(F+Ga),x.push(E),!Ra||isNaN(N)||isNaN(O)||(isNaN(A)||(U.push(A),V.push(N-xa)),U.push(O),V.push(N-xa),U.push(O),V.push(N+Ga))):(isNaN(z)||(w.push(z),x.push(E-xa)),x.push(E-xa),w.push(F),x.push(E+Ga),w.push(F),!Ra||isNaN(N)||isNaN(O)||(isNaN(C)||(U.push(O-xa),V.push(C)),U.push(O-xa),V.push(N),U.push(O+Ga),V.push(N)));B=E;z=F;A=O;C=N;wa=E;Da=F;ja=E;ka=F;if($a||void 0!=v.lineColor||void 0!=v.fillColors||!isNaN(v.dashLength)){var ec=x[x.length-2],fc=w[w.length-2];x.pop();w.pop();this.drawLineGraph(x,\\r\\nw,U,V);x=[ec];w=[fc];t?(w.push(F+Ga),x.push(E)):(x.push(E+Ga),w.push(F));U=[];V=[];this.lineColorSwitched=v.lineColor;this.fillColorsSwitched=v.fillColors;this.dashLengthSwitched=v.dashLength;m&&(Sa?(this.lineColorSwitched=ya,this.fillColorsSwitched=wb):(this.lineColorSwitched=Ja,this.fillColorsSwitched=Qa))}if(Pb||v.gap)B=z=NaN,this.drawLineGraph(x,w,U,V),x=[],w=[],U=[],V=[]}else if(!y){if(1>=this.periodSpan||1xa+Ga)B=z=NaN;this.drawLineGraph(x,w,U,V);x=[];w=[];U=[];V=[]}break;\\r\\ncase \\\"column\\\":Aa=Ha;void 0!=v.lineColor&&(Aa=v.lineColor);if(!isNaN(W)){m||(v.isNegative=WSb&&ob>Sb)){var Ba;if(t){\\\"3d\\\"==L?(Q=F-(r/2-this.depthCount+1)*(k+T)+T/2+R*ea,S=O+H*ea,Ba=ea):(Q=Math.floor(F-(r/2-ea)*(k+T)+T/2),S=O,Ba=0);K=k;wa=E;Da=Q+k/2;ja=E;ka=Q+k/2;Q+K>q+Ba*R&&(K=q-Q+Ba*R);Qaa?!0:!1;0===aa&&1/W===1/-0&&(v.labelIsNegative=!0);isNaN(G.percentWidthValue)||(K=this.height*G.percentWidthValue/100,Q=zb,zb+=K,Da=Q+K/2);K=d.roundTo(K,2);aa=d.roundTo(aa,2);Qn+Ba*H&&(K=\\r\\nn-S+Ba*H);Sq&&(K=q-Q);0>Q&&(K+=Q,Q=0);if(Qta?(Fb=[E,ra],Gb=[O,pa]):(Fb=[O,ra],Gb=[E,pa]);!isNaN(ra)&&!isNaN(pa)&&Fn&&(K=n-S);0>S&&(K+=S,S=0);aa=F-N;if(S=ta&&(Va=0);var ua=new d.Cuboid(h,K,aa,H,R,Ma,Va,ca,Aa,X,ga,u,t,da,bb,mb,Z),Hb,Ib;W>ta?(Hb=[F,sa],Ib=[N,qa]):(Hb=[N,sa],Ib=[F,qa]);!isNaN(sa)&&!isNaN(qa)&&EW?E-bc/2-2-fb-sb:E+bc/2+3+fb+sb):(db=wa,eb=0>W?F+cc/2+fb+sb:F-cc/2-3-fb-sb);Na.translate(db,eb);f.totals[M]=Na;t?(0>eb||eb>q)&&Na.remove():(0>db||db>n)&&Na.remove()}}}}}}}if(\\\"line\\\"==g||\\\"step\\\"==g||\\\"smoothedLine\\\"==g)\\\"smoothedLine\\\"==g?this.drawSmoothedGraph(x,w,U,V):this.drawLineGraph(x,w,U,V),I||this.launchAnimation();this.bulletsHidden&&this.hideBullets();this.customBulletsHidden&&\\r\\nthis.hideCustomBullets()},animateColumns:function(a,b){var c=this,e=c.chart.startDuration;0h.height&&(z=h.height),0>z&&(z=0));q=d.line(l,a,b,t,q,p,x,!1,!0,f);d.setCN(k,q,h.bcn+\\\"stroke\\\");m.push(q);m.click(function(a){h.handleGraphEvent(a,\\r\\n\\\"clickGraph\\\")}).mouseover(function(a){h.handleGraphEvent(a,\\\"rollOverGraph\\\")}).mouseout(function(a){h.handleGraphEvent(a,\\\"rollOutGraph\\\")}).touchmove(function(a){h.chart.handleMouseMove(a)}).touchend(function(a){h.chart.handleTouchEnd(a)});void 0===y||h.useNegativeColorIfDown||(p=d.line(l,a,b,y,r,p,x,!1,!0,f),d.setCN(k,p,h.bcn+\\\"stroke\\\"),d.setCN(k,p,h.bcn+\\\"stroke-negative\\\"),n.push(p));if(0a&&(a=this.fillAlphas),0===a&&(a=this.bulletAlpha),0===a&&(a=1));return a},createBullet:function(a,b,c){if(!isNaN(b)&&!isNaN(c)&&(\\\"none\\\"!=this.bullet||this.customBullet||a.bullet||a.customBullet)){var e=this.chart,h=this.container,f=this.bulletOffset,g=this.bulletSize;isNaN(a.bulletSize)||(g=a.bulletSize);var k=a.values.value,\\r\\nl=this.maxValue,m=this.minValue,n=this.maxBulletSize,q=this.minBulletSize;isNaN(l)||(isNaN(k)||(g=(k-m)/(l-m)*(n-q)+q),m==l&&(g=n));l=g;this.bulletAxis&&(g=a.values.error,isNaN(g)||(k=g),g=this.bulletAxis.stepWidth*k);gb||b>this.width||c<-g/2||c>\\r\\nthis.height)p.remove(),p=null;p&&(this.bulletSet.push(p),p.translate(b,c),this.addListeners(p,a),this.allBullets.push(p));a.bx=b;a.by=c;d.setCN(e,p,this.bcn+\\\"bullet\\\");a.className&&d.setCN(e,p,a.className,!0)}p?(p.size=g||0,a.bulletGraphics=p):p={size:0};p.graphDataItem=a;return p}},showBullets:function(){var a=this.allBullets,b;this.bulletsHidden=!1;for(b=0;ba+k||hq+l)?(g.showBalloon(m),g.hide(0)):(g.followCursor(c),g.showBalloon(m)))):(this.hideBalloonReal(),\\r\\nthis.resizeBullet(a,e,h))}else this.hideBalloonReal()},resizeBullet:function(a,b,c){this.fixBulletSize();if(a&&d.isModern&&(1!=b||!isNaN(c))){var e=a.bulletGraphics;e&&!e.doNotScale&&(e.translate(a.bx,a.by,b),isNaN(c)||(e.setAttr(\\\"fill-opacity\\\",c),e.setAttr(\\\"stroke-opacity\\\",c)),this.resizedDItem=a)}}})})();(function(){var d=window.AmCharts;d.ChartCursor=d.Class({construct:function(a){this.cname=\\\"ChartCursor\\\";this.createEvents(\\\"changed\\\",\\\"zoomed\\\",\\\"onHideCursor\\\",\\\"onShowCursor\\\",\\\"draw\\\",\\\"selected\\\",\\\"moved\\\",\\\"panning\\\",\\\"zoomStarted\\\");this.enabled=!0;this.cursorAlpha=1;this.selectionAlpha=.2;this.cursorColor=\\\"#CC0000\\\";this.categoryBalloonAlpha=1;this.color=\\\"#FFFFFF\\\";this.type=\\\"cursor\\\";this.zoomed=!1;this.zoomable=!0;this.pan=!1;this.categoryBalloonDateFormat=\\\"MMM DD, YYYY\\\";this.categoryBalloonText=\\\"[[category]]\\\";\\r\\nthis.categoryBalloonEnabled=this.valueBalloonsEnabled=!0;this.rolledOver=!1;this.cursorPosition=\\\"middle\\\";this.bulletsEnabled=this.skipZoomDispatch=!1;this.bulletSize=8;this.selectWithoutZooming=this.oneBalloonOnly=!1;this.graphBulletSize=1.7;this.animationDuration=.3;this.zooming=!1;this.adjustment=0;this.avoidBalloonOverlapping=!0;this.leaveCursor=!1;this.leaveAfterTouch=!0;this.valueZoomable=!1;this.balloonPointerOrientation=\\\"horizontal\\\";this.hLineEnabled=this.vLineEnabled=!0;this.vZoomEnabled=\\r\\nthis.hZoomEnabled=!1;d.applyTheme(this,a,this.cname)},draw:function(){this.destroy();var a=this.chart;a.panRequired=!0;var b=a.container;this.rotate=a.rotate;this.container=b;this.prevLineHeight=this.prevLineWidth=NaN;b=b.set();b.translate(this.x,this.y);this.set=b;a.cursorSet.push(b);this.createElements();d.isString(this.limitToGraph)&&(this.limitToGraph=d.getObjById(a.graphs,this.limitToGraph),this.fullWidth=!1,this.cursorPosition=\\\"middle\\\");this.pointer=this.balloonPointerOrientation.substr(0,1).toUpperCase();\\r\\nthis.isHidden=!1;this.hideLines();this.valueLineAxis||(this.valueLineAxis=a.valueAxes[0])},createElements:function(){var a=this.chart,b=a.dx,c=a.dy,e=this.width,h=this.height,f,g,k=this.cursorAlpha;f=this.valueLineAlpha;this.rotate?g=k:(g=f,f=k);\\\"xy\\\"==a.type&&(f=g=k);this.vvLine=d.line(this.container,[b,0,0],[c,0,h],this.cursorColor,f,1);d.setCN(a,this.vvLine,\\\"cursor-line\\\");d.setCN(a,this.vvLine,\\\"cursor-line-vertical\\\");this.hhLine=d.line(this.container,[0,e,e+b],[0,0,c],this.cursorColor,g,1);d.setCN(a,\\r\\nthis.hhLine,\\\"cursor-line\\\");d.setCN(a,this.hhLine,\\\"cursor-line-horizontal\\\");this.vLine=this.rotate?this.vvLine:this.hhLine;this.set.push(this.vvLine);this.set.push(this.hhLine);this.set.node.style.pointerEvents=\\\"none\\\";this.fullLines=this.container.set();a=a.cursorLineSet;a.push(this.fullLines);a.translate(this.x,this.y);a.clipRect(0,0,e,h);this.set.clipRect(0,0,e,h)},update:function(){var a=this.chart,b=a.mouseX-this.x,c=a.mouseY-this.y;this.mouseX=b;this.mouseY=c;this.mouse2X=a.mouse2X-this.x;this.mouse2Y=\\r\\na.mouse2Y-this.y;var e;if(a.chartData&&0document.documentMode&&(this.updateOnReleaseOnly=!0);this.dragIconHeight=this.dragIconWidth=35;this.dragIcon=\\\"dragIconRoundBig\\\";\\r\\nthis.enabled=!0;this.percentStart=this.offset=0;this.percentEnd=1;d.applyTheme(this,a,\\\"SimpleChartScrollbar\\\")},draw:function(){var a=this;a.destroy();if(a.enabled){var b=a.chart.container,c=a.rotate,e=a.chart;e.panRequired=!0;var h=b.set();a.set=h;e.scrollbarsSet.push(h);var f,g;c?(f=a.scrollbarHeight,g=e.plotAreaHeight):(g=a.scrollbarHeight,f=e.plotAreaWidth);a.width=f;if((a.height=g)&&f){var k=d.rect(b,f,g,a.backgroundColor,a.backgroundAlpha,1,a.backgroundColor,a.backgroundAlpha);d.setCN(e,k,\\\"scrollbar-bg\\\");\\r\\na.bg=k;h.push(k);k=d.rect(b,f,g,\\\"#000\\\",.005);h.push(k);a.invisibleBg=k;k.click(function(){a.handleBgClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()}).touchend(function(){a.handleBgClick()});k=d.rect(b,f,g,a.selectedBackgroundColor,a.selectedBackgroundAlpha);d.setCN(e,k,\\\"scrollbar-bg-selected\\\");a.selectedBG=k;h.push(k);f=d.rect(b,f,g,\\\"#000\\\",.005);a.dragger=f;h.push(f);f.mousedown(function(b){a.handleDragStart(b)}).mouseup(function(){a.handleDragStop()}).mouseover(function(){a.handleDraggerOver()}).mouseout(function(){a.handleMouseOut()}).touchstart(function(b){a.handleDragStart(b)}).touchend(function(){a.handleDragStop()});\\r\\nf=e.pathToImages;g=a.dragIcon.replace(/\\\\.[a-z]*$/i,\\\"\\\");c?(k=f+g+\\\"H\\\"+e.extension,f=a.dragIconWidth,c=a.dragIconHeight):(k=f+g+e.extension,c=a.dragIconWidth,f=a.dragIconHeight);g=b.image(k,0,0,c,f);d.setCN(e,g,\\\"scrollbar-grip-left\\\");k=b.image(k,0,0,c,f);d.setCN(e,k,\\\"scrollbar-grip-right\\\");var l=10,m=20;e.panEventsEnabled&&(l=25,m=a.scrollbarHeight);var n=d.rect(b,l,m,\\\"#000\\\",.005),q=d.rect(b,l,m,\\\"#000\\\",.005);q.translate(-(l-c)/2,-(m-f)/2);n.translate(-(l-c)/2,-(m-f)/2);c=b.set([g,q]);b=b.set([k,n]);\\r\\na.iconLeft=c;h.push(a.iconLeft);a.iconRight=b;h.push(b);c.mousedown(function(){a.leftDragStart()}).mouseup(function(){a.leftDragStop()}).mouseover(function(){a.iconRollOver()}).mouseout(function(){a.iconRollOut()}).touchstart(function(){a.leftDragStart()}).touchend(function(){a.leftDragStop()});b.mousedown(function(){a.rightDragStart()}).mouseup(function(){a.rightDragStop()}).mouseover(function(){a.iconRollOver()}).mouseout(function(){a.iconRollOut()}).touchstart(function(){a.rightDragStart()}).touchend(function(){a.rightDragStop()});\\r\\nd.ifArray(e.chartData)?h.show():h.hide();a.hideDragIcons();a.clipDragger(!1)}h.translate(a.x,a.y);h.node.style.msTouchAction=\\\"none\\\";h.node.style.touchAction=\\\"none\\\"}},updateScrollbarSize:function(a,b){if(!isNaN(a)&&!isNaN(b)){a=Math.round(a);b=Math.round(b);var c=this.dragger,e,d,f,g,k;this.rotate?(e=0,d=a,f=this.width+1,g=b-a,c.setAttr(\\\"height\\\",b-a),c.setAttr(\\\"y\\\",d)):(e=a,d=0,f=b-a,g=this.height+1,k=b-a,c.setAttr(\\\"x\\\",e),c.setAttr(\\\"width\\\",k));this.clipAndUpdate(e,d,f,g)}},update:function(){var a,b=\\r\\n!1,c,e,d=this.x,f=this.y,g=this.dragger,k=this.getDBox();if(k){c=k.x+d;e=k.y+f;var l=k.width,k=k.height,m=this.rotate,n=this.chart,q=this.width,p=this.height,t=n.mouseX,r=n.mouseY;a=this.initialMouse;this.forceClip&&this.clipDragger(!0);n.mouseIsOver&&(this.dragging&&(n=this.initialCoord,m?(a=n+(r-a),0>a&&(a=0),n=p-k,a>n&&(a=n),g.setAttr(\\\"y\\\",a)):(a=n+(t-a),0>a&&(a=0),n=q-l,a>n&&(a=n),g.setAttr(\\\"x\\\",a)),this.clipDragger(!0)),this.resizingRight&&(m?(a=r-e,a+e>p+f&&(a=p-e+f),0>a?(this.resizingRight=!1,\\r\\nb=this.resizingLeft=!0):(0===a&&(a=.1),g.setAttr(\\\"height\\\",a))):(a=t-c,a+c>q+d&&(a=q-c+d),0>a?(this.resizingRight=!1,b=this.resizingLeft=!0):(0===a&&(a=.1),g.setAttr(\\\"width\\\",a))),this.clipDragger(!0)),this.resizingLeft&&(m?(c=e,e=r,ep+f&&(e=p+f),a=!0===b?c-e:k+c-e,0>a?(this.resizingRight=!0,this.resizingLeft=!1,g.setAttr(\\\"y\\\",c+k-f)):(0===a&&(a=.1),g.setAttr(\\\"y\\\",e-f),g.setAttr(\\\"height\\\",a))):(e=t,eq+d&&(e=q+d),a=!0===b?c-e:l+c-e,0>a?(this.resizingRight=!0,this.resizingLeft=!1,\\r\\ng.setAttr(\\\"x\\\",c+l-d)):(0===a&&(a=.1),g.setAttr(\\\"x\\\",e-d),g.setAttr(\\\"width\\\",a))),this.clipDragger(!0)))}},stopForceClip:function(){this.animating=this.forceClip=!1},clipDragger:function(a){var b=this.getDBox();if(b){var c=b.x,d=b.y,h=b.width,b=b.height,f=!1;if(this.rotate){if(c=0,h=this.width+1,this.clipY!=d||this.clipH!=b)f=!0}else if(d=0,b=this.height+1,this.clipX!=c||this.clipW!=h)f=!0;f&&(this.clipAndUpdate(c,d,h,b),a&&(this.updateOnReleaseOnly||this.dispatchScrollbarEvent()))}},maskGraphs:function(){},\\r\\nclipAndUpdate:function(a,b,c,d){this.clipX=a;this.clipY=b;this.clipW=c;this.clipH=d;this.selectedBG.setAttr(\\\"width\\\",c);this.selectedBG.setAttr(\\\"height\\\",d);this.selectedBG.translate(a,b);this.updateDragIconPositions();this.maskGraphs(a,b,c,d)},dispatchScrollbarEvent:function(){if(this.skipEvent)this.skipEvent=!1;else{var a=this.chart;a.hideBalloon();var b=this.getDBox(),c=b.x,d=b.y,h=b.width,f=b.height,g,k;this.rotate?(b=d,g=this.height/f,k=1-d/this.height,c=1-(d+f)/this.height):(b=c,g=this.width/\\r\\nh,k=c/this.width,c=(c+h)/this.width);this.fire({type:\\\"zoomed\\\",position:b,chart:a,target:this,multiplier:g,relativeStart:c,relativeEnd:k})}},updateDragIconPositions:function(){var a=this.getDBox(),b=a.x,c=a.y,d=this.iconLeft,h=this.iconRight,f,g,k=this.scrollbarHeight;this.rotate?(f=this.dragIconWidth,g=this.dragIconHeight,d.translate((k-g)/2,c-f/2),h.translate((k-g)/2,c+a.height-f/2)):(f=this.dragIconHeight,g=this.dragIconWidth,d.translate(b-g/2,(k-f)/2),h.translate(b-g/2+a.width,(k-f)/2))},showDragIcons:function(){this.resizeEnabled&&\\r\\n(this.iconLeft.show(),this.iconRight.show())},hideDragIcons:function(){if(!this.resizingLeft&&!this.resizingRight&&!this.dragging){if(this.hideResizeGrips||!this.resizeEnabled)this.iconLeft.hide(),this.iconRight.hide();this.removeCursors()}},removeCursors:function(){this.chart.setMouseCursor(\\\"auto\\\")},fireZoomEvent:function(a){this.fire({type:a,chart:this.chart,target:this})},percentZoom:function(a,b){if(this.dragger&&this.enabled){this.dragger.stop();isNaN(a)&&(a=0);isNaN(b)&&(b=1);var c,d,h;this.rotate?\\r\\n(c=this.height,d=c-c*b,h=c-c*a):(c=this.width,h=c*b,d=c*a);this.updateScrollbarSize(d,h);this.clipDragger(!1);this.percentStart=a;this.percentEnd=b}},destroy:function(){this.clear();d.remove(this.set);d.remove(this.iconRight);d.remove(this.iconLeft)},clear:function(){},handleDragStart:function(){if(this.enabled){this.fireZoomEvent(\\\"zoomStarted\\\");var a=this.chart;this.dragger.stop();this.removeCursors();this.dragging=!0;var b=this.getDBox();this.rotate?(this.initialCoord=b.y,this.initialMouse=a.mouseY):\\r\\n(this.initialCoord=b.x,this.initialMouse=a.mouseX)}},handleDragStop:function(){this.updateOnReleaseOnly&&(this.update(),this.skipEvent=!1,this.dispatchScrollbarEvent());this.dragging=!1;this.mouseIsOver&&this.removeCursors();this.update();this.fireZoomEvent(\\\"zoomEnded\\\")},handleDraggerOver:function(){this.handleMouseOver()},leftDragStart:function(){this.fireZoomEvent(\\\"zoomStarted\\\");this.dragger.stop();this.resizingLeft=!0},leftDragStop:function(){this.resizingLeft=!1;this.mouseIsOver||this.removeCursors();\\r\\nthis.updateOnRelease();this.fireZoomEvent(\\\"zoomEnded\\\")},rightDragStart:function(){this.fireZoomEvent(\\\"zoomStarted\\\");this.dragger.stop();this.resizingRight=!0},rightDragStop:function(){this.resizingRight=!1;this.mouseIsOver||this.removeCursors();this.updateOnRelease();this.fireZoomEvent(\\\"zoomEnded\\\")},iconRollOut:function(){this.removeCursors()},iconRollOver:function(){this.rotate?this.chart.setMouseCursor(\\\"ns-resize\\\"):this.chart.setMouseCursor(\\\"ew-resize\\\");this.handleMouseOver()},getDBox:function(){if(this.dragger)return this.dragger.getBBox()},\\r\\nhandleBgClick:function(){var a=this;if(!a.resizingRight&&!a.resizingLeft){a.zooming=!0;var b,c,e=a.scrollDuration,h=a.dragger;b=a.getDBox();var f=b.height,g=b.width;c=a.chart;var k=a.y,l=a.x,m=a.rotate;m?(b=\\\"y\\\",c=c.mouseY-f/2-k,c=d.fitToBounds(c,0,a.height-f)):(b=\\\"x\\\",c=c.mouseX-g/2-l,c=d.fitToBounds(c,0,a.width-g));a.updateOnReleaseOnly?(a.skipEvent=!1,h.setAttr(b,c),a.dispatchScrollbarEvent(),a.clipDragger()):(a.animating=!0,c=Math.round(c),m?h.animate({y:c},e,\\\">\\\"):h.animate({x:c},e,\\\">\\\"),a.forceClip=\\r\\n!0,clearTimeout(a.forceTO),a.forceTO=setTimeout(function(){a.stopForceClip.call(a)},5E3*e))}},updateOnRelease:function(){this.updateOnReleaseOnly&&(this.update(),this.skipEvent=!1,this.dispatchScrollbarEvent())},handleReleaseOutside:function(){if(this.set){if(this.resizingLeft||this.resizingRight||this.dragging)this.updateOnRelease(),this.removeCursors();this.animating=this.mouseIsOver=this.dragging=this.resizingRight=this.resizingLeft=!1;this.hideDragIcons();this.update()}},handleMouseOver:function(){this.mouseIsOver=\\r\\n!0;this.showDragIcons()},handleMouseOut:function(){this.mouseIsOver=!1;this.hideDragIcons()}})})();(function(){var d=window.AmCharts;d.ChartScrollbar=d.Class({inherits:d.SimpleChartScrollbar,construct:function(a){this.cname=\\\"ChartScrollbar\\\";d.ChartScrollbar.base.construct.call(this,a);this.graphLineColor=\\\"#BBBBBB\\\";this.graphLineAlpha=0;this.graphFillColor=\\\"#BBBBBB\\\";this.graphFillAlpha=1;this.selectedGraphLineColor=\\\"#888888\\\";this.selectedGraphLineAlpha=0;this.selectedGraphFillColor=\\\"#888888\\\";this.selectedGraphFillAlpha=1;this.gridCount=0;this.gridColor=\\\"#FFFFFF\\\";this.gridAlpha=.7;this.skipEvent=\\r\\nthis.autoGridCount=!1;this.color=\\\"#FFFFFF\\\";this.scrollbarCreated=!1;this.oppositeAxis=!0;d.applyTheme(this,a,this.cname)},init:function(){var a=this.categoryAxis,b=this.chart,c=this.gridAxis;a||(\\\"CategoryAxis\\\"==this.gridAxis.cname?(this.catScrollbar=!0,a=new d.CategoryAxis,a.id=\\\"scrollbar\\\"):(a=new d.ValueAxis,a.data=b.chartData,a.id=c.id,a.type=c.type,a.maximumDate=c.maximumDate,a.minimumDate=c.minimumDate,a.minPeriod=c.minPeriod),this.categoryAxis=a);a.chart=b;a.dateFormats=c.dateFormats;a.markPeriodChange=\\r\\nc.markPeriodChange;a.boldPeriodBeginning=c.boldPeriodBeginning;a.labelFunction=c.labelFunction;a.axisItemRenderer=d.RecItem;a.axisRenderer=d.RecAxis;a.guideFillRenderer=d.RecFill;a.inside=!0;a.fontSize=this.fontSize;a.tickLength=0;a.axisAlpha=0;d.isString(this.graph)&&(this.graph=d.getObjById(b.graphs,this.graph));(a=this.graph)&&this.catScrollbar&&(c=this.valueAxis,c||(this.valueAxis=c=new d.ValueAxis,c.visible=!1,c.scrollbar=!0,c.axisItemRenderer=d.RecItem,c.axisRenderer=d.RecAxis,c.guideFillRenderer=\\r\\nd.RecFill,c.labelsEnabled=!1,c.chart=b),b=this.unselectedGraph,b||(b=new d.AmGraph,b.scrollbar=!0,this.unselectedGraph=b,b.negativeBase=a.negativeBase,b.noStepRisers=a.noStepRisers),b=this.selectedGraph,b||(b=new d.AmGraph,b.scrollbar=!0,this.selectedGraph=b,b.negativeBase=a.negativeBase,b.noStepRisers=a.noStepRisers));this.scrollbarCreated=!0},draw:function(){var a=this;d.ChartScrollbar.base.draw.call(a);if(a.enabled){a.scrollbarCreated||a.init();var b=a.chart,c=b.chartData,e=a.categoryAxis,h=a.rotate,\\r\\nf=a.x,g=a.y,k=a.width,l=a.height,m=a.gridAxis,n=a.set;e.setOrientation(!h);e.parseDates=m.parseDates;\\\"ValueAxis\\\"==a.categoryAxis.cname&&(e.rotate=!h);e.equalSpacing=m.equalSpacing;e.minPeriod=m.minPeriod;e.startOnAxis=m.startOnAxis;e.width=k-1;e.height=l;e.gridCount=a.gridCount;e.gridColor=a.gridColor;e.gridAlpha=a.gridAlpha;e.color=a.color;e.tickLength=0;e.axisAlpha=0;e.autoGridCount=a.autoGridCount;e.parseDates&&!e.equalSpacing&&e.timeZoom(b.firstTime,b.lastTime);e.minimum=a.gridAxis.fullMin;e.maximum=\\r\\na.gridAxis.fullMax;e.strictMinMax=!0;e.zoom(0,c.length-1);if((m=a.graph)&&a.catScrollbar){var q=a.valueAxis,p=m.valueAxis;q.id=p.id;q.rotate=h;q.setOrientation(h);q.width=k;q.height=l;q.dataProvider=c;q.reversed=p.reversed;q.logarithmic=p.logarithmic;q.gridAlpha=0;q.axisAlpha=0;n.push(q.set);h?(q.y=g,q.x=0):(q.x=f,q.y=0);var f=Infinity,g=-Infinity,t;for(t=0;tg&&(g=y)}}Infinity!=f&&(q.minimum=f);-Infinity!=g&&(q.maximum=g+.1*(g-f));f==g&&(--q.minimum,q.maximum+=1);void 0!==a.minimum&&(q.minimum=a.minimum);void 0!==a.maximum&&(q.maximum=a.maximum);q.zoom(0,c.length-1);u=a.unselectedGraph;u.id=m.id;u.bcn=\\\"scrollbar-graph-\\\";u.rotate=h;u.chart=b;u.data=c;u.valueAxis=q;u.chart=m.chart;u.categoryAxis=a.categoryAxis;u.periodSpan=m.periodSpan;u.valueField=m.valueField;u.openField=m.openField;u.closeField=m.closeField;u.highField=m.highField;u.lowField=m.lowField;\\r\\nu.lineAlpha=a.graphLineAlpha;u.lineColorR=a.graphLineColor;u.fillAlphas=a.graphFillAlpha;u.fillColorsR=a.graphFillColor;u.connect=m.connect;u.hidden=m.hidden;u.width=k;u.height=l;u.pointPosition=m.pointPosition;u.stepDirection=m.stepDirection;u.periodSpan=m.periodSpan;p=a.selectedGraph;p.id=m.id;p.bcn=u.bcn+\\\"selected-\\\";p.rotate=h;p.chart=b;p.data=c;p.valueAxis=q;p.chart=m.chart;p.categoryAxis=e;p.periodSpan=m.periodSpan;p.valueField=m.valueField;p.openField=m.openField;p.closeField=m.closeField;p.highField=\\r\\nm.highField;p.lowField=m.lowField;p.lineAlpha=a.selectedGraphLineAlpha;p.lineColorR=a.selectedGraphLineColor;p.fillAlphas=a.selectedGraphFillAlpha;p.fillColorsR=a.selectedGraphFillColor;p.connect=m.connect;p.hidden=m.hidden;p.width=k;p.height=l;p.pointPosition=m.pointPosition;p.stepDirection=m.stepDirection;p.periodSpan=m.periodSpan;b=a.graphType;b||(b=m.type);u.type=b;p.type=b;c=c.length-1;u.zoom(0,c);p.zoom(0,c);p.set.click(function(){a.handleBackgroundClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()});\\r\\nu.set.click(function(){a.handleBackgroundClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()});n.push(u.set);n.push(p.set)}n.push(e.set);n.push(e.labelsSet);a.bg.toBack();a.invisibleBg.toFront();a.dragger.toFront();a.iconLeft.toFront();a.iconRight.toFront()}},timeZoom:function(a,b,c){this.startTime=a;this.endTime=b;this.timeDifference=b-a;this.skipEvent=!d.toBoolean(c);this.zoomScrollbar();this.skipEvent||this.dispatchScrollbarEvent()},zoom:function(a,b){this.start=\\r\\na;this.end=b;this.skipEvent=!0;this.zoomScrollbar()},dispatchScrollbarEvent:function(){if(\\\"ValueAxis\\\"==this.categoryAxis.cname)d.ChartScrollbar.base.dispatchScrollbarEvent.call(this);else if(this.skipEvent)this.skipEvent=!1;else{var a=this.chart.chartData,b,c,e=this.dragger.getBBox();b=e.x;var h=e.y,f=e.width,e=e.height,g=this.chart;this.rotate?(b=h,c=e):c=f;f={type:\\\"zoomed\\\",target:this};f.chart=g;var k=this.categoryAxis,l=this.stepWidth,h=g.minSelectedTime,e=!1;if(k.parseDates&&!k.equalSpacing){if(a=\\r\\ng.lastTime,g=g.firstTime,k=Math.round(b/l)+g,b=this.dragging?k+this.timeDifference:Math.round((b+c)/l)+g,k>b&&(k=b),0a&&(b=a),b-hb&&(b=k+h),k!=this.startTime||b!=this.endTime)this.startTime=k,this.endTime=b,f.start=k,f.end=b,f.startDate=new Date(k),f.endDate=new Date(b),this.fire(f)}else if(k.startOnAxis||(b+=l/2),c-=this.stepWidth/2,h=k.xToIndex(b),b=k.xToIndex(b+c),h!=this.start||this.end!=b)k.startOnAxis&&\\r\\n(this.resizingRight&&h==b&&b++,this.resizingLeft&&h==b&&(0this.timeDifference&&(this.timeDifference=0)},handleBackgroundClick:function(){d.ChartScrollbar.base.handleBackgroundClick.call(this);this.dragging||(this.difference=this.end-this.start,this.timeDifference=this.endTime-this.startTime,0>this.timeDifference&&(this.timeDifference=0))}})})();(function(){var d=window.AmCharts;d.AmBalloon=d.Class({construct:function(a){this.cname=\\\"AmBalloon\\\";this.enabled=!0;this.fillColor=\\\"#FFFFFF\\\";this.fillAlpha=.8;this.borderThickness=2;this.borderColor=\\\"#FFFFFF\\\";this.borderAlpha=1;this.cornerRadius=0;this.maxWidth=220;this.horizontalPadding=8;this.verticalPadding=4;this.pointerWidth=6;this.pointerOrientation=\\\"V\\\";this.color=\\\"#000000\\\";this.adjustBorderColor=!0;this.show=this.follow=this.showBullet=!1;this.bulletSize=3;this.shadowAlpha=.4;this.shadowColor=\\r\\n\\\"#000000\\\";this.fadeOutDuration=this.animationDuration=.3;this.fixedPosition=!0;this.offsetY=6;this.offsetX=1;this.textAlign=\\\"center\\\";this.disableMouseEvents=!0;this.deltaSignX=this.deltaSignY=1;d.isModern||(this.offsetY*=1.5);this.sdy=this.sdx=0;d.applyTheme(this,a,this.cname)},draw:function(){var a=this.pointToX,b=this.pointToY;d.isModern||(this.drop=!1);var c=this.chart;d.VML&&(this.fadeOutDuration=0);this.xAnim&&c.stopAnim(this.xAnim);this.yAnim&&c.stopAnim(this.yAnim);this.sdy=this.sdx=0;if(!isNaN(a)){var e=\\r\\nthis.follow,h=c.container,f=this.set;d.remove(f);this.removeDiv();f=h.set();f.node.style.pointerEvents=\\\"none\\\";this.set=f;this.mainSet?(this.mainSet.push(this.set),this.sdx=this.mainSet.x,this.sdy=this.mainSet.y):c.balloonsSet.push(f);if(this.show){var g=this.l,k=this.t,l=this.r,m=this.b,n=this.balloonColor,q=this.fillColor,p=this.borderColor,t=q;void 0!=n&&(this.adjustBorderColor?t=p=n:q=n);var r=this.horizontalPadding,u=this.verticalPadding,y=this.pointerWidth,x=this.pointerOrientation,w=this.cornerRadius,\\r\\nB=c.fontFamily,z=this.fontSize;void 0==z&&(z=c.fontSize);var n=document.createElement(\\\"div\\\"),A=c.classNamePrefix;n.className=A+\\\"-balloon-div\\\";this.className&&(n.className=n.className+\\\" \\\"+A+\\\"-balloon-div-\\\"+this.className);A=n.style;this.disableMouseEvents&&(A.pointerEvents=\\\"none\\\");A.position=\\\"absolute\\\";var C=this.minWidth,D=\\\"\\\";isNaN(C)||(D=\\\"min-width:\\\"+(C-2*r)+\\\"px; \\\");n.innerHTML='
'+this.text+\\\"
\\\";c.chartDiv.appendChild(n);this.textDiv=n;var J=n.offsetWidth,H=n.offsetHeight;n.clientHeight&&(J=n.clientWidth,H=n.clientHeight);B=H+2*u;D=J+2*r;!isNaN(C)&&DB&&(y=B/2),z=b-B/2,a=m&&(z=m-B);\\r\\nzl&&(C=l-D);var k=z+u,m=C+r,L=this.shadowAlpha,P=this.shadowColor,r=this.borderThickness,ia=this.bulletSize,I,u=this.fillAlpha,Z=this.borderAlpha;this.showBullet&&(I=d.circle(h,ia,t,u),f.push(I));this.drop?(g=D/1.6,l=0,\\\"V\\\"==x&&(x=\\\"down\\\"),\\\"H\\\"==x&&(x=\\\"left\\\"),\\\"down\\\"==x&&(C=a+1,z=b-g-g/3),\\\"up\\\"==x&&(l=180,C=a+1,z=b+g+g/3),\\\"left\\\"==x&&(l=270,C=a+g+g/3+2,z=b),\\\"right\\\"==x&&(l=90,C=a-g-g/3+2,z=b),k=z-H/2+1,m=C-J/2-1,q=d.drop(h,g,l,q,u,r,p,Z)):0D-y&&(g=D-y),gB-y&&(x=B-y),xa?D:a-C,D,D,0,0,D]),0this.r-d.width&&(a=this.r-d.width);ha.length&&(c=a.length);var h=this.graphs,f={},g=this.seriesIdField;g||(g=this.categoryField);var k=!1,l,m=this.categoryAxis,n,q,p;m&&(k=m.parseDates,n=m.forceShowField,p=m.classNameField,q=m.labelColorField,l=m.categoryFunction);var t,r,u={},y;k&&(t=d.extractPeriod(m.minPeriod),r=t.period,t=t.count,y=d.getPeriodDuration(r,t));var x={};this.lookupTable=x;var w,B=this.dataDateFormat,\\r\\nz={};for(w=b;w=y*P&&(z[L].gap=!0);this.processFields(b,I,Z);I.category=A.category;I.serialDataItem=A;I.graph=b;A.axes[H].graphs[L]=I;u[L]=A.time;z[L]=I}}}this.chartData[w]=A}if(this.parseCount==e){for(a=0;ab?this.colors[b]:a.lineColorR?\\r\\na.lineColorR:d.randomColor();a.lineColorR=c}a.fillColorsR=a.fillColors?a.fillColors:a.lineColorR;a.bulletBorderColorR=a.bulletBorderColor?a.bulletBorderColor:a.useLineColorForBulletBorder?a.lineColorR:a.bulletColor;a.bulletColorR=a.bulletColor?a.bulletColor:a.lineColorR;if(c=this.patterns)a.pattern=c[b]},handleLegendEvent:function(a){var b=a.type;a=a.dataItem;if(!this.legend.data&&a){var c=a.hidden,d=a.showBalloon;switch(b){case \\\"clickMarker\\\":this.textClickEnabled&&(d?this.hideGraphsBalloon(a):this.showGraphsBalloon(a));\\r\\nbreak;case \\\"clickLabel\\\":d?this.hideGraphsBalloon(a):this.showGraphsBalloon(a);break;case \\\"rollOverItem\\\":c||this.highlightGraph(a);break;case \\\"rollOutItem\\\":c||this.unhighlightGraph();break;case \\\"hideItem\\\":this.hideGraph(a);break;case \\\"showItem\\\":this.showGraph(a)}}},highlightGraph:function(a){var b=this.graphs,c,d=.2;this.legend&&(d=this.legend.rollOverGraphAlpha);if(1!=d)for(c=0;c=b&&(b=.001);if(void 0==h||0===h)h=.01;void 0===f&&(f=\\\"#000000\\\");void 0===g&&(g=0);e={fill:c,stroke:f,\\\"fill-opacity\\\":e,\\\"stroke-width\\\":h,\\\"stroke-opacity\\\":g};a=isNaN(l)?a.circle(0,0,b).attr(e):a.ellipse(0,0,b,l).attr(e);k&&a.gradient(\\\"radialGradient\\\",[c,d.adjustLuminosity(c,-.6)]);return a};d.text=function(a,b,c,e,h,f,g,k){f||(f=\\\"middle\\\");\\\"right\\\"==f&&(f=\\\"end\\\");\\\"left\\\"==f&&(f=\\\"start\\\");isNaN(k)&&(k=1);void 0!==b&&(b=String(b),d.isIE&&\\r\\n!d.isModern&&(b=b.replace(\\\"&\\\",\\\"&\\\"),b=b.replace(\\\"&\\\",\\\"&\\\")));c={fill:c,\\\"font-family\\\":e,\\\"font-size\\\":h+\\\"px\\\",opacity:k};!0===g&&(c[\\\"font-weight\\\"]=\\\"bold\\\");c[\\\"text-anchor\\\"]=f;return a.text(b,c)};d.polygon=function(a,b,c,e,h,f,g,k,l,m,n){isNaN(f)&&(f=.01);isNaN(k)&&(k=h);var q=e,p=!1;\\\"object\\\"==typeof q&&1b&&(b=Math.abs(b),t=-b);0>c&&(c=Math.abs(c),r=-c);t+=d.dx;r+=d.dy;h={fill:q,stroke:g,\\\"fill-opacity\\\":h,\\\"stroke-opacity\\\":k};void 0!==n&&0=x&&(h=x);var w=1/180*Math.PI,x=b+Math.sin(e*w)*k,B=c-Math.cos(e*w)*u,z=b+Math.sin(e*w)*f,A=c-Math.cos(e*w)*g,C=b+Math.sin((e+h)*w)*f,D=c-Math.cos((e+h)*w)*g,J=b+Math.sin((e+h)*w)*k,w=c-Math.cos((e+h)*w)*u,H={fill:d.adjustLuminosity(m.fill,-.2),\\\"stroke-opacity\\\":0,\\\"fill-opacity\\\":m[\\\"fill-opacity\\\"]},R=0;180Math.abs(h)&&1>=Math.abs(C-z)&&1>=Math.abs(D-A)&&(L=!0));h=\\\"\\\";var P;q&&(H[\\\"fill-opacity\\\"]=0,H[\\\"stroke-opacity\\\"]=m[\\\"stroke-opacity\\\"]/2,H.stroke=m.stroke);if(0a.length&&(a=String(a[0])+String(a[0])+String(a[1])+String(a[1])+String(a[2])+String(a[2]));b=b||0;var c=\\\"#\\\",e,h;for(h=0;3>h;h++)e=parseInt(a.substr(2*h,2),16),e=Math.round(Math.min(Math.max(0,e+e*b),255)).toString(16),c+=(\\\"00\\\"+\\r\\ne).substr(e.length);return c}})();(function(){var d=window.AmCharts;d.Bezier=d.Class({construct:function(a,b,c,e,h,f,g,k,l,m){\\\"object\\\"==typeof g&&(g=g[0]);\\\"object\\\"==typeof k&&(k=k[0]);0===k&&(g=\\\"none\\\");f={fill:g,\\\"fill-opacity\\\":k,\\\"stroke-width\\\":f};void 0!==l&&0c&&(k=c);b.push({x:l.x-k/h,y:l.y-e/f});b.push({x:l.x,y:l.y});b.push({x:l.x+k/h,y:l.y+e/f})}e=a[a.length-1].y-a[a.length-2].y;c=a[a.length-1].x-\\r\\na[a.length-2].x;b.push({x:a[a.length-1].x-c/h,y:a[a.length-1].y-e/f});b.push({x:a[a.length-1].x,y:a[a.length-1].y});return b},drawBeziers:function(a){var b=\\\"\\\",c;for(c=0;c<(a.length-1)/3;c++)b+=this.drawBezierMidpoint(a[3*c],a[3*c+1],a[3*c+2],a[3*c+3]);return b},drawBezierMidpoint:function(a,b,c,d){var h=Math.round,f=this.getPointOnSegment(a,b,.75),g=this.getPointOnSegment(d,c,.75),k=(d.x-a.x)/16,l=(d.y-a.y)/16,m=this.getPointOnSegment(a,b,.375);a=this.getPointOnSegment(f,g,.375);a.x-=k;a.y-=l;b=this.getPointOnSegment(g,\\r\\nf,.375);b.x+=k;b.y+=l;c=this.getPointOnSegment(d,c,.375);k=this.getMiddle(m,a);f=this.getMiddle(f,g);g=this.getMiddle(b,c);m=\\\" Q\\\"+h(m.x)+\\\",\\\"+h(m.y)+\\\",\\\"+h(k.x)+\\\",\\\"+h(k.y);m+=\\\" Q\\\"+h(a.x)+\\\",\\\"+h(a.y)+\\\",\\\"+h(f.x)+\\\",\\\"+h(f.y);m+=\\\" Q\\\"+h(b.x)+\\\",\\\"+h(b.y)+\\\",\\\"+h(g.x)+\\\",\\\"+h(g.y);return m+=\\\" Q\\\"+h(c.x)+\\\",\\\"+h(c.y)+\\\",\\\"+h(d.x)+\\\",\\\"+h(d.y)},getMiddle:function(a,b){return{x:(a.x+b.x)/2,y:(a.y+b.y)/2}},getPointOnSegment:function(a,b,c){return{x:a.x+(b.x-a.x)*c,y:a.y+(b.y-a.y)*c}}})})();(function(){var d=window.AmCharts;d.AmDraw=d.Class({construct:function(a,b,c,e){d.SVG_NS=\\\"http://www.w3.org/2000/svg\\\";d.SVG_XLINK=\\\"http://www.w3.org/1999/xlink\\\";d.hasSVG=!!document.createElementNS&&!!document.createElementNS(d.SVG_NS,\\\"svg\\\").createSVGRect;1>b&&(b=10);1>c&&(c=10);this.div=a;this.width=b;this.height=c;this.rBin=document.createElement(\\\"div\\\");d.hasSVG?(d.SVG=!0,b=this.createSvgElement(\\\"svg\\\"),a.appendChild(b),this.container=b,this.addDefs(e),this.R=new d.SVGRenderer(this)):d.isIE&&d.VMLRenderer&&\\r\\n(d.VML=!0,d.vmlStyleSheet||(document.namespaces.add(\\\"amvml\\\",\\\"urn:schemas-microsoft-com:vml\\\"),31>document.styleSheets.length?(b=document.createStyleSheet(),b.addRule(\\\".amvml\\\",\\\"behavior:url(#default#VML); display:inline-block; antialias:true\\\"),d.vmlStyleSheet=b):document.styleSheets[0].addRule(\\\".amvml\\\",\\\"behavior:url(#default#VML); display:inline-block; antialias:true\\\")),this.container=a,this.R=new d.VMLRenderer(this,e),this.R.disableSelection(a))},createSvgElement:function(a){return document.createElementNS(d.SVG_NS,\\r\\na)},circle:function(a,b,c,e){var h=new d.AmDObject(\\\"circle\\\",this);h.attr({r:c,cx:a,cy:b});this.addToContainer(h.node,e);return h},ellipse:function(a,b,c,e,h){var f=new d.AmDObject(\\\"ellipse\\\",this);f.attr({rx:c,ry:e,cx:a,cy:b});this.addToContainer(f.node,h);return f},setSize:function(a,b){0c&&(c=1);1>e&&(e=1);k.attr({x:a,y:b,width:c,height:e,rx:h,ry:h,\\\"stroke-width\\\":f});this.addToContainer(k.node,g);return k},image:function(a,b,c,e,h,f){var g=new d.AmDObject(\\\"image\\\",this);g.attr({x:b,y:c,width:e,height:h});this.R.path(g,a);this.addToContainer(g.node,f);return g},addToContainer:function(a,b){b||(b=this.container);b.appendChild(a)},text:function(a,b,c){return this.R.text(a,b,c)},path:function(a,b,c,e){var h=new d.AmDObject(\\\"path\\\",this);e||(e=\\\"100,100\\\");\\r\\nh.attr({cs:e});c?h.attr({dd:a}):h.attr({d:a});this.addToContainer(h.node,b);return h},set:function(a){return this.R.set(a)},remove:function(a){if(a){var b=this.rBin;b.appendChild(a);b.innerHTML=\\\"\\\"}},renderFix:function(){var a=this.container,b=a.style;b.top=\\\"0px\\\";b.left=\\\"0px\\\";try{var c=a.getBoundingClientRect(),d=c.left-Math.round(c.left),h=c.top-Math.round(c.top);d&&(b.left=d+\\\"px\\\");h&&(b.top=h+\\\"px\\\")}catch(f){}},update:function(){this.R.update()},addDefs:function(a){if(d.hasSVG){var b=this.createSvgElement(\\\"desc\\\"),\\r\\nc=this.container;c.setAttribute(\\\"version\\\",\\\"1.1\\\");c.style.position=\\\"absolute\\\";this.setSize(this.width,this.height);d.rtl&&(c.setAttribute(\\\"direction\\\",\\\"rtl\\\"),c.style.left=\\\"auto\\\",c.style.right=\\\"0px\\\");a&&(a.addCodeCredits&&b.appendChild(document.createTextNode(\\\"JavaScript chart by amCharts \\\"+a.version)),c.appendChild(b),a.defs&&(b=this.createSvgElement(\\\"defs\\\"),c.appendChild(b),d.parseDefs(a.defs,b),this.defs=b))}}})})();(function(){var d=window.AmCharts;d.AmDObject=d.Class({construct:function(a,b){this.D=b;this.R=b.R;this.node=this.R.create(this,a);this.y=this.x=0;this.scale=1},attr:function(a){this.R.attr(this,a);return this},getAttr:function(a){return this.node.getAttribute(a)},setAttr:function(a,b){this.R.setAttr(this,a,b);return this},clipRect:function(a,b,c,d){this.R.clipRect(this,a,b,c,d)},translate:function(a,b,c,d){d||(a=Math.round(a),b=Math.round(b));this.R.move(this,a,b,c);this.x=a;this.y=b;this.scale=\\r\\nc;this.angle&&this.rotate(this.angle)},rotate:function(a,b){this.R.rotate(this,a,b);this.angle=a},animate:function(a,b,c){for(var e in a)if(a.hasOwnProperty(e)){var h=e,f=a[e];c=d.getEffect(c);this.R.animate(this,h,f,b,c)}},push:function(a){if(a){var b=this.node;b.appendChild(a.node);var c=a.clipPath;c&&b.appendChild(c);(a=a.grad)&&b.appendChild(a)}},text:function(a){this.R.setText(this,a)},remove:function(){this.stop();this.R.remove(this)},clear:function(){var a=this.node;if(a.hasChildNodes())for(;1<=\\r\\na.childNodes.length;)a.removeChild(a.firstChild)},hide:function(){this.setAttr(\\\"visibility\\\",\\\"hidden\\\")},show:function(){this.setAttr(\\\"visibility\\\",\\\"visible\\\")},getBBox:function(){return this.R.getBBox(this)},toFront:function(){var a=this.node;if(a){this.prevNextNode=a.nextSibling;var b=a.parentNode;b&&b.appendChild(a)}},toPrevious:function(){var a=this.node;a&&this.prevNextNode&&(a=a.parentNode)&&a.insertBefore(this.prevNextNode,null)},toBack:function(){var a=this.node;if(a){this.prevNextNode=a.nextSibling;\\r\\nvar b=a.parentNode;if(b){var c=b.firstChild;c&&b.insertBefore(a,c)}}},mouseover:function(a){this.R.addListener(this,\\\"mouseover\\\",a);return this},mouseout:function(a){this.R.addListener(this,\\\"mouseout\\\",a);return this},click:function(a){this.R.addListener(this,\\\"click\\\",a);return this},dblclick:function(a){this.R.addListener(this,\\\"dblclick\\\",a);return this},mousedown:function(a){this.R.addListener(this,\\\"mousedown\\\",a);return this},mouseup:function(a){this.R.addListener(this,\\\"mouseup\\\",a);return this},touchmove:function(a){this.R.addListener(this,\\r\\n\\\"touchmove\\\",a);return this},touchstart:function(a){this.R.addListener(this,\\\"touchstart\\\",a);return this},touchend:function(a){this.R.addListener(this,\\\"touchend\\\",a);return this},contextmenu:function(a){this.node.addEventListener?this.node.addEventListener(\\\"contextmenu\\\",a,!0):this.R.addListener(this,\\\"contextmenu\\\",a);return this},stop:function(){d.removeFromArray(this.R.animations,this.an_translate);d.removeFromArray(this.R.animations,this.an_y);d.removeFromArray(this.R.animations,this.an_x)},length:function(){return this.node.childNodes.length},\\r\\ngradient:function(a,b,c){this.R.gradient(this,a,b,c)},pattern:function(a,b,c){a&&this.R.pattern(this,a,b,c)}})})();(function(){var d=window.AmCharts;d.VMLRenderer=d.Class({construct:function(a,b){this.chart=b;this.D=a;this.cNames={circle:\\\"oval\\\",ellipse:\\\"oval\\\",rect:\\\"roundrect\\\",path:\\\"shape\\\"};this.styleMap={x:\\\"left\\\",y:\\\"top\\\",width:\\\"width\\\",height:\\\"height\\\",\\\"font-family\\\":\\\"fontFamily\\\",\\\"font-size\\\":\\\"fontSize\\\",visibility:\\\"visibility\\\"}},create:function(a,b){var c;if(\\\"group\\\"==b)c=document.createElement(\\\"div\\\"),a.type=\\\"div\\\";else if(\\\"text\\\"==b)c=document.createElement(\\\"div\\\"),a.type=\\\"text\\\";else if(\\\"image\\\"==b)c=document.createElement(\\\"img\\\"),\\r\\na.type=\\\"image\\\";else{a.type=\\\"shape\\\";a.shapeType=this.cNames[b];c=document.createElement(\\\"amvml:\\\"+this.cNames[b]);var d=document.createElement(\\\"amvml:stroke\\\");c.appendChild(d);a.stroke=d;var h=document.createElement(\\\"amvml:fill\\\");c.appendChild(h);a.fill=h;h.className=\\\"amvml\\\";d.className=\\\"amvml\\\";c.className=\\\"amvml\\\"}c.style.position=\\\"absolute\\\";c.style.top=0;c.style.left=0;return c},path:function(a,b){a.node.setAttribute(\\\"src\\\",b)},setAttr:function(a,b,c){if(void 0!==c){var e;8===document.documentMode&&\\r\\n(e=!0);var h=a.node,f=a.type,g=h.style;\\\"r\\\"==b&&(g.width=2*c,g.height=2*c);\\\"oval\\\"==a.shapeType&&(\\\"rx\\\"==b&&(g.width=2*c),\\\"ry\\\"==b&&(g.height=2*c));\\\"roundrect\\\"==a.shapeType&&(\\\"width\\\"!=b&&\\\"height\\\"!=b||--c);\\\"cursor\\\"==b&&(g.cursor=c);\\\"cx\\\"==b&&(g.left=c-d.removePx(g.width)/2);\\\"cy\\\"==b&&(g.top=c-d.removePx(g.height)/2);var k=this.styleMap[b];\\\"width\\\"==k&&0>c&&(c=0);void 0!==k&&(g[k]=c);\\\"text\\\"==f&&(\\\"text-anchor\\\"==b&&(a.anchor=c,k=h.clientWidth,\\\"end\\\"==c&&(g.marginLeft=-k+\\\"px\\\"),\\\"middle\\\"==c&&(g.marginLeft=-(k/2)+\\r\\n\\\"px\\\",g.textAlign=\\\"center\\\"),\\\"start\\\"==c&&(g.marginLeft=\\\"0px\\\")),\\\"fill\\\"==b&&(g.color=c),\\\"font-weight\\\"==b&&(g.fontWeight=c));if(g=a.children)for(k=0;kc&&(g=\\\"dot\\\"),3<=c&&6>=c&&(g=\\\"dash\\\"),6g&&(b+=g);0>k&&(c+=k)}return{x:b,y:c,width:d,height:h}},setText:function(a,b){var c=a.node;c&&(c.innerHTML=b);this.setAttr(a,\\\"text-anchor\\\",a.anchor)},addListener:function(a,b,c){a.node[\\\"on\\\"+b]=c},move:function(a,b,c){var e=a.node,h=e.style;\\\"text\\\"==a.type&&(c-=d.removePx(h.fontSize)/2-1);\\\"oval\\\"==a.shapeType&&(b-=d.removePx(h.width)/2,c-=d.removePx(h.height)/2);a=a.bw;isNaN(a)||(b-=a,c-=a);isNaN(b)||isNaN(c)||(e.style.left=b+\\\"px\\\",e.style.top=\\r\\nc+\\\"px\\\")},svgPathToVml:function(a){var b=a.split(\\\" \\\");a=\\\"\\\";var c,d=Math.round,h;for(h=0;hthis.fontSize&&(this.ly=h/2-1);0p&&(p=z);w=w.height;w>t&&(t=w)}var z=t=0,A=f,C=0,D=0;for(B=0;BD&&(D=\\r\\nw.height);H+w.width>q&&0=l&&(z=0,t++,C=C+D+m,A=f,D=0);y.push(J)}w=y.getBBox();l=w.height+2*m-1;\\\"left\\\"==a||\\\"right\\\"==a?(n=w.width+2*f,k=n+b+c,g.style.width=k+\\\"px\\\",this.ieW=k):n=k-b-c-1;c=d.polygon(this.container,[0,n,n,0],[0,0,l,l],this.backgroundColor,this.backgroundAlpha,1,this.borderColor,this.borderAlpha);d.setCN(this.chart,c,\\\"legend-bg\\\");u.push(c);u.translate(b,e);c.toBack();b=f;if(\\\"top\\\"==a||\\\"bottom\\\"==a||\\\"absolute\\\"==\\r\\na||\\\"outside\\\"==a)\\\"center\\\"==this.align?b=f+(n-w.width)/2:\\\"right\\\"==this.align&&(b=f+n-w.width);y.translate(b,m+1);this.titleHeight>l&&(l=this.titleHeight);a=l+e+h+1;0>a&&(a=0);a>this.chart.divRealHeight&&(g.style.top=\\\"0px\\\");g.style.height=Math.round(a)+\\\"px\\\";r.setSize(this.divWidth,a)},createEntry:function(a){if(!1!==a.visibleInLegend&&!a.hideFromLegend){var b=this.chart,c=a.markerType;a.legendEntryWidth=this.markerSize;c||(c=this.markerType);var e=a.color,h=a.alpha;a.legendKeyColor&&(e=a.legendKeyColor());\\r\\na.legendKeyAlpha&&(h=a.legendKeyAlpha());var f;!0===a.hidden&&(f=e=this.markerDisabledColor);var g=a.pattern,k=a.customMarker;k||(k=this.customMarker);var l=this.container,m=this.markerSize,n=0,q=0,p=m/2;if(this.useGraphSettings){c=a.type;this.switchType=void 0;if(\\\"line\\\"==c||\\\"step\\\"==c||\\\"smoothedLine\\\"==c||\\\"ohlc\\\"==c)g=l.set(),a.hidden||(e=a.lineColorR,f=a.bulletBorderColorR),n=d.line(l,[0,2*m],[m/2,m/2],e,a.lineAlpha,a.lineThickness,a.dashLength),d.setCN(b,n,\\\"graph-stroke\\\"),g.push(n),a.bullet&&(a.hidden||\\r\\n(e=a.bulletColorR),n=d.bullet(l,a.bullet,a.bulletSize,e,a.bulletAlpha,a.bulletBorderThickness,f,a.bulletBorderAlpha))&&(d.setCN(b,n,\\\"graph-bullet\\\"),n.translate(m+1,m/2),g.push(n)),p=0,n=m,q=m/3;else{var t;a.getGradRotation&&(t=a.getGradRotation(),0===t&&(t=180));n=a.fillColorsR;!0===a.hidden&&(n=e);if(g=this.createMarker(\\\"rectangle\\\",n,a.fillAlphas,a.lineThickness,e,a.lineAlpha,t,g,a.dashLength))p=m,g.translate(p,m/2);n=m}d.setCN(b,g,\\\"graph-\\\"+c);d.setCN(b,g,\\\"graph-\\\"+a.id)}else if(k)g=l.image(k,0,0,\\r\\nm,m);else{var r;isNaN(this.gradientRotation)||(r=180+this.gradientRotation);(g=this.createMarker(c,e,h,void 0,void 0,void 0,r,g))&&g.translate(m/2,m/2)}d.setCN(b,g,\\\"legend-marker\\\");this.addListeners(g,a);l=l.set([g]);this.switchable&&a.switchable&&l.setAttr(\\\"cursor\\\",\\\"pointer\\\");void 0!==a.id&&d.setCN(b,l,\\\"legend-item-\\\"+a.id);d.setCN(b,l,a.className,!0);(f=this.switchType)&&\\\"none\\\"!=f&&0c&&(d=\\\"00\\\"+c);10<=c&&100>c&&(d=\\\"0\\\"+c);a=a.replace(/fff/g,d)}return a};d.extractPeriod=function(a){var b=d.stripNumbers(a),c=1;b!=a&&(c=Number(a.slice(0,a.indexOf(b))));return{period:b,count:c}};d.getDate=function(a,b,c){return a instanceof Date?d.newDate(a,c):b&&isNaN(a)?d.stringToDate(a,b):new Date(a)};d.daysInMonth=function(a){return(new Date(a.getYear(),a.getMonth()+\\r\\n1,0)).getDate()};d.newDate=function(a,b){return b&&-1==b.indexOf(\\\"fff\\\")?new Date(a):new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds())};d.resetDateToMin=function(a,b,c,e){void 0===e&&(e=1);var h,f,g,k,l,m,n;d.useUTC?(h=a.getUTCFullYear(),f=a.getUTCMonth(),g=a.getUTCDate(),k=a.getUTCHours(),l=a.getUTCMinutes(),m=a.getUTCSeconds(),n=a.getUTCMilliseconds(),a=a.getUTCDay()):(h=a.getFullYear(),f=a.getMonth(),g=a.getDate(),k=a.getHours(),l=\\r\\na.getMinutes(),m=a.getSeconds(),n=a.getMilliseconds(),a=a.getDay());switch(b){case \\\"YYYY\\\":h=Math.floor(h/c)*c;f=0;g=1;n=m=l=k=0;break;case \\\"MM\\\":f=Math.floor(f/c)*c;g=1;n=m=l=k=0;break;case \\\"WW\\\":g=a>=e?g-a+e:g-(7+a)+e;n=m=l=k=0;break;case \\\"DD\\\":n=m=l=k=0;break;case \\\"hh\\\":k=Math.floor(k/c)*c;n=m=l=0;break;case \\\"mm\\\":l=Math.floor(l/c)*c;n=m=0;break;case \\\"ss\\\":m=Math.floor(m/c)*c;n=0;break;case \\\"fff\\\":n=Math.floor(n/c)*c}d.useUTC?(a=new Date,a.setUTCFullYear(h,f,g),a.setUTCHours(k,l,m,n)):a=new Date(h,f,g,\\r\\nk,l,m,n);return a};d.getPeriodDuration=function(a,b){void 0===b&&(b=1);var c;switch(a){case \\\"YYYY\\\":c=316224E5;break;case \\\"MM\\\":c=26784E5;break;case \\\"WW\\\":c=6048E5;break;case \\\"DD\\\":c=864E5;break;case \\\"hh\\\":c=36E5;break;case \\\"mm\\\":c=6E4;break;case \\\"ss\\\":c=1E3;break;case \\\"fff\\\":c=1}return c*b};d.intervals={s:{nextInterval:\\\"ss\\\",contains:1E3},ss:{nextInterval:\\\"mm\\\",contains:60,count:0},mm:{nextInterval:\\\"hh\\\",contains:60,count:1},hh:{nextInterval:\\\"DD\\\",contains:24,count:2},DD:{nextInterval:\\\"\\\",contains:Infinity,count:3}};\\r\\nd.getMaxInterval=function(a,b){var c=d.intervals;return a>=c[b].contains?(a=Math.round(a/c[b].contains),b=c[b].nextInterval,d.getMaxInterval(a,b)):\\\"ss\\\"==b?c[b].nextInterval:b};d.dayNames=\\\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\\\".split(\\\" \\\");d.shortDayNames=\\\"Sun Mon Tue Wed Thu Fri Sat\\\".split(\\\" \\\");d.monthNames=\\\"January February March April May June July August September October November December\\\".split(\\\" \\\");d.shortMonthNames=\\\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\\\".split(\\\" \\\");\\r\\nd.getWeekNumber=function(a){a=new Date(a);a.setHours(0,0,0);a.setDate(a.getDate()+4-(a.getDay()||7));var b=new Date(a.getFullYear(),0,1);return Math.ceil(((a-b)/864E5+1)/7)};d.stringToDate=function(a,b){var c={},e=[{pattern:\\\"YYYY\\\",period:\\\"year\\\"},{pattern:\\\"YY\\\",period:\\\"year\\\"},{pattern:\\\"MM\\\",period:\\\"month\\\"},{pattern:\\\"M\\\",period:\\\"month\\\"},{pattern:\\\"DD\\\",period:\\\"date\\\"},{pattern:\\\"D\\\",period:\\\"date\\\"},{pattern:\\\"JJ\\\",period:\\\"hours\\\"},{pattern:\\\"J\\\",period:\\\"hours\\\"},{pattern:\\\"HH\\\",period:\\\"hours\\\"},{pattern:\\\"H\\\",period:\\\"hours\\\"},\\r\\n{pattern:\\\"KK\\\",period:\\\"hours\\\"},{pattern:\\\"K\\\",period:\\\"hours\\\"},{pattern:\\\"LL\\\",period:\\\"hours\\\"},{pattern:\\\"L\\\",period:\\\"hours\\\"},{pattern:\\\"NN\\\",period:\\\"minutes\\\"},{pattern:\\\"N\\\",period:\\\"minutes\\\"},{pattern:\\\"SS\\\",period:\\\"seconds\\\"},{pattern:\\\"S\\\",period:\\\"seconds\\\"},{pattern:\\\"QQQ\\\",period:\\\"milliseconds\\\"},{pattern:\\\"QQ\\\",period:\\\"milliseconds\\\"},{pattern:\\\"Q\\\",period:\\\"milliseconds\\\"}],h=!0,f=b.indexOf(\\\"AA\\\");-1!=f&&(a.substr(f,2),\\\"pm\\\"==a.toLowerCase&&(h=!1));var f=b,g,k,l;for(l=0;lr&&(r=\\\"0\\\"+r);b=b.replace(/JJ/g,r);b=b.replace(/J/g,q);r=k;0===r&&(r=24,-1!=b.indexOf(\\\"H\\\")&&(f--,0===f&&(e=new Date(a),e.setDate(e.getDate()-1),h=e.getMonth(),f=e.getDate(),e=e.getFullYear())));a=h+1;9>h&&(a=\\\"0\\\"+a);q=f;10>f&&(q=\\\"0\\\"+f);var u=r;10>u&&(u=\\\"0\\\"+u);b=b.replace(/HH/g,u);b=b.replace(/H/g,r);r=k;11u&&(u=\\\"0\\\"+u);b=b.replace(/KK/g,u);b=b.replace(/K/g,r);r=k;0===r&&(r=12);12u&&(u=\\\"0\\\"+u);b=b.replace(/LL/g,u);b=b.replace(/L/g,r);\\r\\nr=l;10>r&&(r=\\\"0\\\"+r);b=b.replace(/NN/g,r);b=b.replace(/N/g,l);l=m;10>l&&(l=\\\"0\\\"+l);b=b.replace(/SS/g,l);b=b.replace(/S/g,m);m=n;10>m&&(m=\\\"00\\\"+m);100>m&&(m=\\\"0\\\"+m);l=n;10>l&&(l=\\\"00\\\"+l);b=b.replace(/QQQ/g,m);b=b.replace(/QQ/g,l);b=b.replace(/Q/g,n);b=12>k?b.replace(/A/g,c.amString):b.replace(/A/g,c.pmString);b=b.replace(/YYYY/g,\\\"@IIII@\\\");b=b.replace(/YY/g,\\\"@II@\\\");b=b.replace(/MMMM/g,\\\"@XXXX@\\\");b=b.replace(/MMM/g,\\\"@XXX@\\\");b=b.replace(/MM/g,\\\"@XX@\\\");b=b.replace(/M/g,\\\"@X@\\\");b=b.replace(/DD/g,\\\"@RR@\\\");b=b.replace(/D/g,\\r\\n\\\"@R@\\\");b=b.replace(/EEEE/g,\\\"@PPPP@\\\");b=b.replace(/EEE/g,\\\"@PPP@\\\");b=b.replace(/EE/g,\\\"@PP@\\\");b=b.replace(/E/g,\\\"@P@\\\");b=b.replace(/@IIII@/g,e);b=b.replace(/@II@/g,p);b=b.replace(/@XXXX@/g,c.monthNames[h]);b=b.replace(/@XXX@/g,c.shortMonthNames[h]);b=b.replace(/@XX@/g,a);b=b.replace(/@X@/g,h+1);b=b.replace(/@RR@/g,q);b=b.replace(/@R@/g,f);b=b.replace(/@PPPP@/g,c.dayNames[g]);b=b.replace(/@PPP@/g,c.shortDayNames[g]);b=b.replace(/@PP@/g,t);return b=b.replace(/@P@/g,g)};d.changeDate=function(a,b,c,e,h){if(d.useUTC)return d.changeUTCDate(a,\\r\\nb,c,e,h);var f=-1;void 0===e&&(e=!0);void 0===h&&(h=!1);!0===e&&(f=1);switch(b){case \\\"YYYY\\\":a.setFullYear(a.getFullYear()+c*f);e||h||a.setDate(a.getDate()+1);break;case \\\"MM\\\":b=a.getMonth();a.setMonth(a.getMonth()+c*f);a.getMonth()>b+c*f&&a.setDate(a.getDate()-1);e||h||a.setDate(a.getDate()+1);break;case \\\"DD\\\":a.setDate(a.getDate()+c*f);break;case \\\"WW\\\":a.setDate(a.getDate()+c*f*7);break;case \\\"hh\\\":a.setHours(a.getHours()+c*f);break;case \\\"mm\\\":a.setMinutes(a.getMinutes()+c*f);break;case \\\"ss\\\":a.setSeconds(a.getSeconds()+\\r\\nc*f);break;case \\\"fff\\\":a.setMilliseconds(a.getMilliseconds()+c*f)}return a};d.changeUTCDate=function(a,b,c,d,h){var f=-1;void 0===d&&(d=!0);void 0===h&&(h=!1);!0===d&&(f=1);switch(b){case \\\"YYYY\\\":a.setUTCFullYear(a.getUTCFullYear()+c*f);d||h||a.setUTCDate(a.getUTCDate()+1);break;case \\\"MM\\\":b=a.getUTCMonth();a.setUTCMonth(a.getUTCMonth()+c*f);a.getUTCMonth()>b+c*f&&a.setUTCDate(a.getUTCDate()-1);d||h||a.setUTCDate(a.getUTCDate()+1);break;case \\\"DD\\\":a.setUTCDate(a.getUTCDate()+c*f);break;case \\\"WW\\\":a.setUTCDate(a.getUTCDate()+\\r\\nc*f*7);break;case \\\"hh\\\":a.setUTCHours(a.getUTCHours()+c*f);break;case \\\"mm\\\":a.setUTCMinutes(a.getUTCMinutes()+c*f);break;case \\\"ss\\\":a.setUTCSeconds(a.getUTCSeconds()+c*f);break;case \\\"fff\\\":a.setUTCMilliseconds(a.getUTCMilliseconds()+c*f)}return a}})();\"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/script-loader/~/raw-loader!../Vendor/amcharts/amcharts.js\n ** module id = 20\n ** module chunks = 1\n **/","require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\Vendor\\\\amcharts\\\\lang\\\\es.js\"))\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../Vendor/amcharts/lang/es.js\n ** module id = 21\n ** module chunks = 1\n **/","module.exports = \"AmCharts.translations.es = {\\\"monthNames\\\":[\\\"Enero\\\",\\\"Febrero\\\",\\\"Marzo\\\",\\\"Abril\\\",\\\"Mayo\\\",\\\"Junio\\\",\\\"Julio\\\",\\\"Agosto\\\",\\\"Septiembre\\\",\\\"Octubre\\\",\\\"Noviembre\\\",\\\"Diciembre\\\"],\\\"shortMonthNames\\\":[\\\"Ene\\\",\\\"Feb\\\",\\\"Mar\\\",\\\"Abr\\\",\\\"May\\\",\\\"Jun\\\",\\\"Jul\\\",\\\"Ago\\\",\\\"Sep\\\",\\\"Oct\\\",\\\"Nov\\\",\\\"Dic\\\"],\\\"dayNames\\\":[\\\"Domingo\\\",\\\"Lunes\\\",\\\"Martes\\\",\\\"Miércoles\\\",\\\"Jueves\\\",\\\"Viernes\\\",\\\"Sábado\\\"],\\\"shortDayNames\\\":[\\\"Dom\\\",\\\"Lun\\\",\\\"Mar\\\",\\\"Mié\\\",\\\"Jue\\\",\\\"Vie\\\",\\\"Sáb\\\"],\\\"zoomOutText\\\":\\\"Mostrar todos\\\"}\"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/script-loader/~/raw-loader!../Vendor/amcharts/lang/es.js\n ** module id = 22\n ** module chunks = 1\n **/","require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\Vendor\\\\amcharts\\\\pie.js\"))\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../Vendor/amcharts/pie.js\n ** module id = 23\n ** module chunks = 1\n **/","module.exports = \"(function(){var k=window.AmCharts;k.AmSlicedChart=k.Class({inherits:k.AmChart,construct:function(a){this.createEvents(\\\"rollOverSlice\\\",\\\"rollOutSlice\\\",\\\"clickSlice\\\",\\\"pullOutSlice\\\",\\\"pullInSlice\\\",\\\"rightClickSlice\\\");k.AmSlicedChart.base.construct.call(this,a);this.colors=\\\"#FF0F00 #FF6600 #FF9E01 #FCD202 #F8FF01 #B0DE09 #04D215 #0D8ECF #0D52D1 #2A0CD0 #8A0CCF #CD0D74 #754DEB #DDDDDD #999999 #333333 #000000 #57032A #CA9726 #990000 #4B0C25\\\".split(\\\" \\\");this.alpha=1;this.groupPercent=0;this.groupedTitle=\\\"Other\\\";\\r\\nthis.groupedPulled=!1;this.groupedAlpha=1;this.marginLeft=0;this.marginBottom=this.marginTop=10;this.marginRight=0;this.hoverAlpha=1;this.outlineColor=\\\"#FFFFFF\\\";this.outlineAlpha=0;this.outlineThickness=1;this.startAlpha=0;this.startDuration=1;this.startEffect=\\\"bounce\\\";this.sequencedAnimation=!0;this.pullOutDuration=1;this.pullOutEffect=\\\"bounce\\\";this.pullOnHover=this.pullOutOnlyOne=!1;this.labelsEnabled=!0;this.labelTickColor=\\\"#000000\\\";this.labelTickAlpha=.2;this.hideLabelsPercent=0;this.urlTarget=\\r\\n\\\"_self\\\";this.autoMarginOffset=10;this.gradientRatio=[];this.maxLabelWidth=200;k.applyTheme(this,a,\\\"AmSlicedChart\\\")},initChart:function(){k.AmSlicedChart.base.initChart.call(this);this.dataChanged&&(this.parseData(),this.dispatchDataUpdated=!0,this.dataChanged=!1,this.setLegendData(this.chartData));this.drawChart()},handleLegendEvent:function(a){var b=a.type,c=a.dataItem,d=this.legend;if(!d.data&&c){var g=c.hidden;a=a.event;switch(b){case \\\"clickMarker\\\":g||d.switchable||this.clickSlice(c,a);break;case \\\"clickLabel\\\":g||\\r\\nthis.clickSlice(c,a,!1);break;case \\\"rollOverItem\\\":g||this.rollOverSlice(c,!1,a);break;case \\\"rollOutItem\\\":g||this.rollOutSlice(c,a);break;case \\\"hideItem\\\":this.hideSlice(c,a);break;case \\\"showItem\\\":this.showSlice(c,a)}}},invalidateVisibility:function(){this.recalculatePercents();this.initChart();var a=this.legend;a&&a.invalidateSize()},addEventListeners:function(a,b){var c=this;a.mouseover(function(a){c.rollOverSlice(b,!0,a)}).mouseout(function(a){c.rollOutSlice(b,a)}).touchend(function(a){c.rollOverSlice(b,\\r\\na)}).touchstart(function(a){}).mouseup(function(a){c.clickSlice(b,a)}).contextmenu(function(a){c.handleRightClick(b,a)})},formatString:function(a,b,c){a=k.formatValue(a,b,[\\\"value\\\"],this.nf,\\\"\\\",this.usePrefixes,this.prefixesOfSmallNumbers,this.prefixesOfBigNumbers);var d=this.pf.precision;isNaN(this.tempPrec)||(this.pf.precision=this.tempPrec);a=k.formatValue(a,b,[\\\"percents\\\"],this.pf);a=k.massReplace(a,{\\\"[[title]]\\\":b.title,\\\"[[description]]\\\":b.description});this.pf.precision=d;-1!=a.indexOf(\\\"[[\\\")&&(a=\\r\\nk.formatDataContextValue(a,b.dataContext));a=c?k.fixNewLines(a):k.fixBrakes(a);return a=k.cleanFromEmpty(a)},startSlices:function(){var a;for(a=0;athis.hoverAlpha&&a.wedge&&a.wedge.attr({opacity:this.hoverAlpha});var d=a.balloonX,g=a.balloonY;a.pulled&&(d+=a.pullX,g+=a.pullY);var f=this.formatString(this.balloonText,a,!0),h=this.balloonFunction;h&&(f=h(a,f));h=k.adjustLuminosity(a.color,-.15);f?this.showBalloon(f,h,b,d,g):this.hideBalloon();0===a.value&&this.hideBalloon();this.fire({type:\\\"rollOverSlice\\\",dataItem:a,chart:this,event:c})}},rollOutSlice:function(a,b){isNaN(a)||(a=this.chartData[a]);a.wedge&&a.wedge.attr({opacity:1});this.hideBalloon();\\r\\nthis.fire({type:\\\"rollOutSlice\\\",dataItem:a,chart:this,event:b})},clickSlice:function(a,b,c){isNaN(a)||(a=this.chartData[a]);a.pulled?this.pullSlice(a,0):this.pullSlice(a,1);k.getURL(a.url,this.urlTarget);c||this.fire({type:\\\"clickSlice\\\",dataItem:a,chart:this,event:b})},handleRightClick:function(a,b){isNaN(a)||(a=this.chartData[a]);this.fire({type:\\\"rightClickSlice\\\",dataItem:a,chart:this,event:b})},drawTicks:function(){var a=this.chartData,b;for(b=0;bb&&(b=g);d.remove()}return b}})})();(function(){var k=window.AmCharts;k.AmPieChart=k.Class({inherits:k.AmSlicedChart,construct:function(a){this.type=\\\"pie\\\";k.AmPieChart.base.construct.call(this,a);this.cname=\\\"AmPieChart\\\";this.pieBrightnessStep=30;this.minRadius=10;this.depth3D=0;this.startAngle=90;this.angle=this.innerRadius=0;this.startRadius=\\\"500%\\\";this.pullOutRadius=\\\"20%\\\";this.labelRadius=20;this.labelText=\\\"[[title]]: [[percents]]%\\\";this.balloonText=\\\"[[title]]: [[percents]]% ([[value]])\\\\n[[description]]\\\";this.previousScale=1;this.adjustPrecision=\\r\\n!1;this.gradientType=\\\"radial\\\";k.applyTheme(this,a,this.cname)},drawChart:function(){k.AmPieChart.base.drawChart.call(this);var a=this.chartData;if(k.ifArray(a)){if(0this.maxLabelWidth&&(p=this.maxLabelWidth);this.labelText&&this.labelsEnabled||(x=p=0);A=void 0===this.pieX?(d-h-e)/2+h:f(this.pieX,this.realWidth);B=void 0===this.pieY?(g-z-n)/2+z:f(this.pieY,g);l=f(this.radius,d,g);l||(d=0<=x?d-h-e-2*p:d-h-e,g=g-z-n,l=Math.min(d,g),gd&&(l=d)),g=k.toCoordinate(this.pullOutRadius,l),l=(0<=x?l-1.8*(x+g):l-1.8*g)/2);l=l&&(f=l-1);n=k.fitToBounds(this.startAngle,0,360);0=this.hideLabelsPercent){var m=n+r/2;0>m&&(m+=360);360t&&(e.skipTick=!0));var r=A+p*(l+t),E=B+C*(l+t),w,u=0;isNaN(D)&&350=m&&0<=m?(y=0,w=\\\"start\\\",u=8):90<=m&&180>m?(y=1,w=\\\"start\\\",u=8):\\r\\n180<=m&&270>m?(y=2,w=\\\"end\\\",u=-8):270<=m&&354>=m?(y=3,w=\\\"end\\\",u=-8):354<=m&&(h>D?(y=0,w=\\\"start\\\",u=8):(y=3,w=\\\"end\\\",u=-8));e.labelQuarter=y}else w=\\\"middle\\\";m=this.formatString(this.labelText,e);(t=this.labelFunction)&&(m=t(e,m));t=e.labelColor;t||(t=this.color);\\\"\\\"!==m&&(m=k.wrappedText(c,m,t,this.fontFamily,this.fontSize,w,!1,this.maxLabelWidth),k.setCN(this,m,\\\"pie-label\\\"),k.setCN(this,m,e.className,!0),m.translate(r+1.5*u,E),m.node.style.pointerEvents=\\\"none\\\",e.ty=E,e.textX=r+1.5*u,v.push(m),this.axesSet.push(v),\\r\\ne.labelSet=v,e.label=m);e.tx=r;e.tx2=r+u;e.tx0=A+p*l;e.ty0=B+C*l}r=f+(l-f)/2;e.pulled&&(r+=this.pullOutRadiusReal);e.balloonX=p*r+A;e.balloonY=C*r+B;e.startX=Math.round(p*z);e.startY=Math.round(C*z);e.pullX=Math.round(p*g);e.pullY=Math.round(C*g);this.graphsSet.push(q);if(0===e.alpha||0c?d.toFront():180<=c&&d.toBack()}},arrangeLabels:function(){var a=this.chartData,b=a.length,c,d;for(d=b-1;0<=d;d--)c=a[d],0!==c.labelQuarter||c.hidden||this.checkOverlapping(d,c,0,!0,0);for(d=0;dg&&isNaN(b.labelRadius)&&(f=b.ty+3*b.iy,b.ty=f,n.translate(b.textX,\\r\\nf),this.checkOverlapping(a,b,c,d,g+1))}},checkOverlappingReal:function(a,b,c){var d=!1,g=a.label,f=b.label;a.labelQuarter!=c||a.hidden||b.hidden||!f||(g=g.getBBox(),c={},c.width=g.width,c.height=g.height,c.y=a.ty,c.x=a.tx,a=f.getBBox(),f={},f.width=a.width,f.height=a.height,f.y=b.ty,f.x=b.tx,k.hitTest(c,f)&&(d=!0));return d}})})();\"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/script-loader/~/raw-loader!../Vendor/amcharts/pie.js\n ** module id = 24\n ** module chunks = 1\n **/","require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\Vendor\\\\amcharts\\\\serial.js\"))\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../Vendor/amcharts/serial.js\n ** module id = 25\n ** module chunks = 1\n **/","module.exports = \"(function(){var e=window.AmCharts;e.AmRectangularChart=e.Class({inherits:e.AmCoordinateChart,construct:function(a){e.AmRectangularChart.base.construct.call(this,a);this.theme=a;this.createEvents(\\\"zoomed\\\",\\\"changed\\\");this.marginRight=this.marginBottom=this.marginTop=this.marginLeft=20;this.depth3D=this.angle=0;this.plotAreaFillColors=\\\"#FFFFFF\\\";this.plotAreaFillAlphas=0;this.plotAreaBorderColor=\\\"#000000\\\";this.plotAreaBorderAlpha=0;this.maxZoomFactor=20;this.zoomOutButtonImageSize=19;this.zoomOutButtonImage=\\r\\n\\\"lens\\\";this.zoomOutText=\\\"Show all\\\";this.zoomOutButtonColor=\\\"#e5e5e5\\\";this.zoomOutButtonAlpha=0;this.zoomOutButtonRollOverAlpha=1;this.zoomOutButtonPadding=8;this.trendLines=[];this.autoMargins=!0;this.marginsUpdated=!1;this.autoMarginOffset=10;e.applyTheme(this,a,\\\"AmRectangularChart\\\")},initChart:function(){e.AmRectangularChart.base.initChart.call(this);this.updateDxy();!this.marginsUpdated&&this.autoMargins&&(this.resetMargins(),this.drawGraphs=!1);this.processScrollbars();this.updateMargins();this.updatePlotArea();\\r\\nthis.updateScrollbars();this.updateTrendLines();this.updateChartCursor();this.updateValueAxes();this.scrollbarOnly||this.updateGraphs()},drawChart:function(){e.AmRectangularChart.base.drawChart.call(this);this.drawPlotArea();if(e.ifArray(this.chartData)){var a=this.chartCursor;a&&a.draw()}},resetMargins:function(){var a={},b;if(\\\"xy\\\"==this.type){var c=this.xAxes,d=this.yAxes;for(b=0;b=g-c&&\\r\\n(this.marginRight=Math.round(l-g+c));d.top&&eh-c&&(this.marginBottom=Math.round(this.marginBottom+b-h+c));this.initChart()},getAxisBounds:function(a,b,c,d,g){if(!a.ignoreAxisWidth){var e=a.labelsSet,f=a.tickLength;a.inside&&(f=0);if(e)switch(e=a.getBBox(),a.position){case \\\"top\\\":a=e.y;d>a&&(d=a);break;case \\\"bottom\\\":a=e.y+e.height;ga&&(b=a)}}return{l:b,t:d,r:c,b:g}},drawZoomOutButton:function(){var a=this;if(!a.zbSet){var b=a.container.set();a.zoomButtonSet.push(b);var c=a.color,d=a.fontSize,g=a.zoomOutButtonImageSize,h=a.zoomOutButtonImage.replace(/\\\\.[a-z]*$/i,\\\"\\\"),f=e.lang.zoomOutText||a.zoomOutText,k=a.zoomOutButtonColor,l=a.zoomOutButtonAlpha,m=a.zoomOutButtonFontSize,q=a.zoomOutButtonPadding;isNaN(m)||(d=m);(m=a.zoomOutButtonFontColor)&&(c=m);var m=a.zoomOutButton,n;m&&(m.fontSize&&(d=m.fontSize),m.color&&(c=m.color),\\r\\nm.backgroundColor&&(k=m.backgroundColor),isNaN(m.backgroundAlpha)||(a.zoomOutButtonRollOverAlpha=m.backgroundAlpha));var p=m=0;void 0!==a.pathToImages&&h&&(n=a.container.image(a.pathToImages+h+a.extension,0,0,g,g),e.setCN(a,n,\\\"zoom-out-image\\\"),b.push(n),n=n.getBBox(),m=n.width+5);void 0!==f&&(c=e.text(a.container,f,c,a.fontFamily,d,\\\"start\\\"),e.setCN(a,c,\\\"zoom-out-label\\\"),d=c.getBBox(),p=n?n.height/2-3:d.height/2,c.translate(m,p),b.push(c));n=b.getBBox();c=1;e.isModern||(c=0);k=e.rect(a.container,n.width+\\r\\n2*q+5,n.height+2*q-2,k,1,1,k,c);k.setAttr(\\\"opacity\\\",l);k.translate(-q,-q);e.setCN(a,k,\\\"zoom-out-bg\\\");b.push(k);k.toBack();a.zbBG=k;n=k.getBBox();b.translate(a.marginLeftReal+a.plotAreaWidth-n.width+q,a.marginTopReal+q);b.hide();b.mouseover(function(){a.rollOverZB()}).mouseout(function(){a.rollOutZB()}).click(function(){a.clickZB()}).touchstart(function(){a.rollOverZB()}).touchend(function(){a.rollOutZB();a.clickZB()});for(l=0;la&&(a=1);1>b&&(b=1);this.plotAreaWidth=Math.round(a);this.plotAreaHeight=Math.round(b);this.plotBalloonsSet.translate(c,d)},updateDxy:function(){this.dx=\\r\\nMath.round(this.depth3D*Math.cos(this.angle*Math.PI/180));this.dy=Math.round(-this.depth3D*Math.sin(this.angle*Math.PI/180));this.d3x=Math.round(this.columnSpacing3D*Math.cos(this.angle*Math.PI/180));this.d3y=Math.round(-this.columnSpacing3D*Math.sin(this.angle*Math.PI/180))},updateMargins:function(){var a=this.getTitleHeight();this.titleHeight=a;this.marginTopReal=this.marginTop-this.dy;this.fixMargins&&!this.fixMargins.top&&(this.marginTopReal+=a);this.marginBottomReal=this.marginBottom;this.marginLeftReal=\\r\\nthis.marginLeft;this.marginRightReal=this.marginRight},updateValueAxes:function(){var a=this.valueAxes,b;for(b=0;bd)var g=c,c=d,d=g;this.relativeZoomValueAxes(b,c,d);this.updateAfterValueZoom()},updateAfterValueZoom:function(){this.zoomAxesAndGraphs();\\r\\nthis.zoomScrollbar()},relativeZoomValueAxes:function(a,b,c){b=e.fitToBounds(b,0,1);c=e.fitToBounds(c,0,1);if(b>c){var d=b;b=c;c=d}var d=1/this.maxZoomFactor,g=e.getDecimals(d)+4;c-ba?d?(f=this.endTime-this.startTime,d=this.startTime+c*g,g=this.endTime+e*g,0=k&&(g=k,d=k-f),this.zoomToDates(new Date(d),new Date(g))):(0=f-1&&(c=e=0),d=this.start+\\r\\nc,g=this.end+e,this.zoomToIndexes(d,g)):d?(f=this.endTime-this.startTime,d=this.startTime-c*g,g=this.endTime-e*g,0this.start&&(c=e=0),d=this.start-c,g=this.end-e,this.zoomToIndexes(d,g))}},validateData:function(a){this.marginsUpdated=!1;this.zoomOutOnDataUpdate&&!a&&(this.endTime=this.end=this.startTime=this.start=NaN);e.AmSerialChart.base.validateData.call(this)},drawChart:function(){if(0c&&(a=b-c),a!=this.startTime&&b-a>c&&(b=a+c));var d=this.minSelectedTime;if(0k&&(a=k);bk&&(b=k);bthis.firstTime&&(a=!0),this.endTimec&&(a=b-c),a!=this.start&&b-a>c&&(b=a+c));if(a!=this.start||b!=this.end){var d=this.chartData.length-1;isNaN(a)&&(a=0,isNaN(c)||(a=d-c));isNaN(b)&&(b=d);bd&&(b=d);a>d&&(a=d-1);0>a&&\\r\\n(a=0);this.start=a;this.end=b;this.categoryAxis.zoom(a,b);this.zoomAxesAndGraphs();this.zoomScrollbar();this.fixCursor();0!==a||b!=this.chartData.length-1?this.showZB(!0):this.showZB(!1);this.updateColumnsDepth();this.dispatchIndexZoomEvent()}},updateGraphs:function(){e.AmSerialChart.base.updateGraphs.call(this);var a=this.graphs,b;for(b=0;bb.depth?1:-1},zoomScrollbar:function(){var a=this.chartScrollbar,b=this.categoryAxis;if(a){if(!this.zoomedByScrollbar){var c=a.dragger;c&&c.stop()}this.zoomedByScrollbar=!1;b.parseDates&&!b.equalSpacing?a.timeZoom(this.startTime,this.endTime):a.zoom(this.start,this.end)}this.zoomValueScrollbar(this.valueScrollbar)},updateTrendLines:function(){var a=this.trendLines,b;for(b=0;be&&(e=0);h>a.length-1&&(h=a.length-1);var f=e+Math.round((h-e)/2),k=a[f][b];return c==k?f:1>=h-e?d?e:Math.abs(a[e][b]-c)a&&(a=0),b>d-1&&(b=d-1),d=this.categoryAxis,d.parseDates&&!d.equalSpacing?this.zoom(c[a].time,this.getEndTime(c[b].time)):this.zoom(a,\\r\\nb))}},zoomToDates:function(a,b){var c=this.chartData;if(c)if(this.categoryAxis.equalSpacing){var d=this.getClosestIndex(c,\\\"time\\\",a.getTime(),!0,0,c.length);b=e.resetDateToMin(b,this.categoryAxis.minPeriod,1);c=this.getClosestIndex(c,\\\"time\\\",b.getTime(),!1,0,c.length);this.zoom(d,c)}else this.zoom(a.getTime(),b.getTime())},zoomToCategoryValues:function(a,b){this.chartData&&this.zoom(this.getCategoryIndexByValue(a),this.getCategoryIndexByValue(b))},formatPeriodString:function(a,b){if(b){var c=[\\\"value\\\",\\r\\n\\\"open\\\",\\\"low\\\",\\\"high\\\",\\\"close\\\"],d=\\\"value open low high close average sum count\\\".split(\\\" \\\"),g=b.valueAxis,h=this.chartData,f=b.numberFormatter;f||(f=this.nf);for(var k=0;ky.x||y.x>y.graph.height)D=NaN}else if(0>y.x||y.x>y.graph.width)D=NaN;if(!isNaN(D)){isNaN(n)&&(n=D);p=D;if(isNaN(x)||x>D)x=D;if(isNaN(u)||u<\\r\\nD)u=D;B=e.getDecimals(m);var F=e.getDecimals(D),m=m+D,m=e.roundTo(m,Math.max(B,F));q++;B=m/q}}if(y.percents&&(y=y.percents[l],!isNaN(y))){isNaN(C)&&(C=y);v=y;if(isNaN(w)||w>y)w=y;if(isNaN(A)||Ab&&0===q&&(q=180):0>c&&270==q&&(q=90);this.gradientRotation=q;0===d&&0===e&&(this.cornerRadius=n);this.draw()},draw:function(){var a=this.set;a.clear();\\r\\nvar b=this.container,c=b.chart,d=this.w,g=this.h,h=this.dx,f=this.dy,k=this.colors,l=this.alpha,m=this.bwidth,q=this.bcolor,n=this.balpha,p=this.gradientRotation,x=this.cornerRadius,u=this.dashLength,B=this.pattern,r=this.topRadius,t=this.bcn,C=k,v=k;\\\"object\\\"==typeof k&&(C=k[0],v=k[k.length-1]);var w,A,z,G,y,D,F,L,M,Q=l;B&&(l=0);var E,H,I,J,K=this.rotate;if(0Math.abs(g)&&(g=0);1>Math.abs(d)&&(d=0);!isNaN(r)&&(0g&&(m=\\\" A\\\"),l+=m+Math.round(d/2-I)+\\\",\\\"+Math.round(g-J)+\\\",\\\"+Math.round(d/2+I)+\\\",\\\"+Math.round(g+J)+\\\",0,\\\"+g+\\\",\\\"+d+\\\",\\\"+g,l+=\\\" L\\\"+d+\\\",0\\\",l+=m+Math.round(d/\\r\\n2+E)+\\\",\\\"+Math.round(H)+\\\",\\\"+Math.round(d/2-E)+\\\",\\\"+Math.round(-H)+\\\",\\\"+d+\\\",0,0,0\\\"):(l+=\\\"A\\\"+I+\\\",\\\"+J+\\\",0,0,0,\\\"+(d-d/2*(1-r))+\\\",\\\"+g+\\\"L\\\"+d+\\\",0\\\",l+=\\\"A\\\"+E+\\\",\\\"+H+\\\",0,0,1,0,0\\\"),E=180),b=b.path(l).attr(k),b.gradient(\\\"linearGradient\\\",[C,e.adjustLuminosity(C,-.3),e.adjustLuminosity(C,-.3),C],E),K?b.translate(h/2,0):b.translate(0,f/2)):b=0===g?e.line(b,[0,d],[0,0],q,n,m,u):0===d?e.line(b,[0,0],[0,g],q,n,m,u):0g?[w,\\r\\nM,A,z,G,y,D,F,L,b]:[F,L,A,z,G,y,w,M,D,b]:K?0g?[w,b,F]:[F,b,w];e.setCN(c,b,t+\\\"front\\\");e.setCN(c,A,t+\\\"back\\\");e.setCN(c,F,t+\\\"top\\\");e.setCN(c,w,t+\\\"bottom\\\");e.setCN(c,G,t+\\\"left\\\");e.setCN(c,y,t+\\\"right\\\");for(w=0;wb&&(this.endTime=b);t=this.minorGridEnabled;B=this.gridAlpha;var v,w=0,A=0;if(this.widthField)for(b=this.start;b<=this.end;b++)if(v=this.data[b]){var z=Number(this.data[b].dataContext[this.widthField]);isNaN(z)||(w+=z,v.widthValue=z)}if(this.parseDates&&!this.equalSpacing)this.lastTime=a[a.length-1].time,this.maxTime=e.resetDateToMin(new Date(this.lastTime+1.05*x),this.minPeriod,\\r\\n1,q).getTime(),this.timeDifference=this.endTime-this.startTime,this.parseDatesDraw();else if(!this.parseDates){if(this.cellWidth=this.getStepWidth(f),fp&&(p=0),v=0,this.widthField&&(p=this.start),this.end-p+1>=this.autoRotateCount&&(this.labelRotationR=this.autoRotateAngle),b=p;b<=this.end+2;b++){n=!1;0<=b&&bthis.end&&\\\"start\\\"==this.tickPosition&&(p=\\\" \\\");this.rotate&&this.inside&&(r-=2);isNaN(u.widthValue)||(u.percentWidthValue=u.widthValue/w*100,z=this.rotate?this.height*u.widthValue/w:this.width*u.widthValue/w,q=A,A+=z,r=z/2);r=new this.axisItemRenderer(this,q,p,n,z,r,void 0,x,a,!1,u.labelColor,u.className);r.serialDataItem=u;this.pushAxisItem(r);this.gridAlpha=\\r\\nB}}else if(this.parseDates&&this.equalSpacing){h=this.start;this.startTime=this.data[this.start].time;this.endTime=this.data[this.end].time;this.timeDifference=this.endTime-this.startTime;b=this.choosePeriod(0);g=b.period;u=b.count;b=e.getPeriodDuration(g,u);bp&&(p=0);A=this.end+2;A>=this.data.length&&(A=this.data.length);v=!1;v=!l;this.previousPos=-1E3;20=a){q=this.getCoordinate(b-this.start);t=!1;this.nextPeriod[B]&&(t=this.checkPeriodChange(this.nextPeriod[B],1,f,x,B));x=!1;t&&this.markPeriodChange?(t=this.dateFormatsObject[this.nextPeriod[B]],x=!0):t=this.dateFormatsObject[B];p=e.formatDate(new Date(f),t,c);if(b==d&&!l||b==k&&!m)p=\\\" \\\";v?v=!1:(n||(x=!1),q-this.previousPos>this.safeDistance*Math.cos(this.labelRotationR*Math.PI/180)&&(this.labelFunction&&\\r\\n(p=this.labelFunction(p,new Date(f),this,g,u,r)),this.boldLabels&&(x=!0),r=new this.axisItemRenderer(this,q,p,void 0,void 0,void 0,void 0,x),t=r.graphics(),this.pushAxisItem(r),t=t.getBBox().width,e.isModern||(t-=q),this.previousPos=q+t));r=x=f}}for(b=l=0;bthis.height+1&&h--:k>this.width+1&&h--;0>k&&h++;return h=e.fitToBounds(h,0,b.length-1)},dateToCoordinate:function(a){return this.parseDates&&!this.equalSpacing?(a.getTime()-this.startTime)*this.stepWidth:this.parseDates&&this.equalSpacing?(a=this.chart.getClosestIndex(this.data,\\r\\n\\\"time\\\",a.getTime(),!1,0,this.data.length-1),this.getCoordinate(a-this.start)):NaN},categoryToCoordinate:function(a){if(this.chart){var b=this.chart.getCategoryIndexByValue(a);if(!isNaN(b))return this.getCoordinate(b-this.start);if(this.parseDates)return this.dateToCoordinate(new Date(a))}else return NaN},coordinateToDate:function(a){return this.equalSpacing?(a=this.xToIndex(a),new Date(this.data[a].time)):new Date(this.startTime+a/this.stepWidth)},coordinateToValue:function(a){a=this.xToIndex(a);\\r\\nif(a=this.data[a])return this.parseDates?a.time:a.category},getCoordinate:function(a){a*=this.stepWidth;this.startOnAxis||(a+=this.stepWidth/2);return Math.round(a)},formatValue:function(a,b){b||(b=this.currentDateFormat);this.parseDates&&(a=e.formatDate(new Date(a),b,this.chart));return a},showBalloonAt:function(a){a=this.parseDates?this.dateToCoordinate(new Date(a)):this.categoryToCoordinate(a);return this.adjustBalloonCoordinate(a)},formatBalloonText:function(a,b,c){var d=\\\"\\\",g=\\\"\\\",h=this.chart,\\r\\nf=this.data[b];if(f)if(this.parseDates)d=e.formatDate(f.category,c,h),b=e.changeDate(new Date(f.category),this.minPeriod,1),g=e.formatDate(b,c,h),-1!=d.indexOf(\\\"fff\\\")&&(d=e.formatMilliseconds(d,f.category),g=e.formatMilliseconds(g,b));else{var k;this.data[b+1]&&(k=this.data[b+1]);d=e.fixNewLines(f.category);k&&(g=e.fixNewLines(k.category))}a=a.replace(/\\\\[\\\\[category\\\\]\\\\]/g,String(d));return a=a.replace(/\\\\[\\\\[toCategory\\\\]\\\\]/g,String(g))},adjustBalloonCoordinate:function(a,b){var c=this.xToIndex(a),d=\\r\\nthis.chart.chartCursor;if(this.stickBalloonToCategory){var e=this.data[c];e&&(a=e.x[this.id]);this.stickBalloonToStart&&(a-=this.cellWidth/2);var h=0;if(d){var f=d.limitToGraph;f&&(h=e.axes[f.valueAxis.id].graphs[f.id].y);this.rotate?(\\\"left\\\"==this.position?(f&&(h-=d.width),0h&&(h=0),d.fixHLine(a,h)):(\\\"top\\\"==this.position?(f&&(h-=d.height),0h&&(h=0),d.fixVLine(a,h))}}d&&!b&&(d.setIndex(c),this.parseDates&&d.setTimestamp(this.coordinateToDate(a).getTime()));return a}})})();\"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/script-loader/~/raw-loader!../Vendor/amcharts/serial.js\n ** module id = 26\n ** module chunks = 1\n **/","require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\Vendor\\\\amcharts\\\\themes\\\\light.js\"))\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../Vendor/amcharts/themes/light.js\n ** module id = 27\n ** module chunks = 1\n **/","module.exports = \"AmCharts.themes.light = {\\r\\n\\r\\n\\tthemeName:\\\"light\\\",\\r\\n\\r\\n\\tAmChart: {\\r\\n\\t\\tcolor: \\\"#000000\\\", backgroundColor: \\\"#FFFFFF\\\"\\r\\n\\t},\\r\\n\\r\\n\\tAmCoordinateChart: {\\r\\n\\t\\tcolors: [\\\"#67b7dc\\\", \\\"#fdd400\\\", \\\"#84b761\\\", \\\"#cc4748\\\", \\\"#cd82ad\\\", \\\"#2f4074\\\", \\\"#448e4d\\\", \\\"#b7b83f\\\", \\\"#b9783f\\\", \\\"#b93e3d\\\", \\\"#913167\\\"]\\r\\n\\t},\\r\\n\\r\\n\\tAmStockChart: {\\r\\n\\t\\tcolors: [\\\"#67b7dc\\\", \\\"#fdd400\\\", \\\"#84b761\\\", \\\"#cc4748\\\", \\\"#cd82ad\\\", \\\"#2f4074\\\", \\\"#448e4d\\\", \\\"#b7b83f\\\", \\\"#b9783f\\\", \\\"#b93e3d\\\", \\\"#913167\\\"]\\r\\n\\t},\\r\\n\\r\\n\\tAmSlicedChart: {\\r\\n\\t\\tcolors: [\\\"#67b7dc\\\", \\\"#fdd400\\\", \\\"#84b761\\\", \\\"#cc4748\\\", \\\"#cd82ad\\\", \\\"#2f4074\\\", \\\"#448e4d\\\", \\\"#b7b83f\\\", \\\"#b9783f\\\", \\\"#b93e3d\\\", \\\"#913167\\\"],\\r\\n\\t\\toutlineAlpha: 1,\\r\\n\\t\\toutlineThickness: 2,\\r\\n\\t\\tlabelTickColor: \\\"#000000\\\",\\r\\n\\t\\tlabelTickAlpha: 0.3\\r\\n\\t},\\r\\n\\r\\n\\tAmRectangularChart: {\\r\\n\\t\\tzoomOutButtonColor: '#000000',\\r\\n\\t\\tzoomOutButtonRollOverAlpha: 0.15,\\r\\n\\t\\tzoomOutButtonImage: \\\"lens\\\"\\r\\n\\t},\\r\\n\\r\\n\\tAxisBase: {\\r\\n\\t\\taxisColor: \\\"#000000\\\",\\r\\n\\t\\taxisAlpha: 0.3,\\r\\n\\t\\tgridAlpha: 0.1,\\r\\n\\t\\tgridColor: \\\"#000000\\\"\\r\\n\\t},\\r\\n\\r\\n\\tChartScrollbar: {\\r\\n\\t\\tbackgroundColor: \\\"#000000\\\",\\r\\n\\t\\tbackgroundAlpha: 0.12,\\r\\n\\t\\tgraphFillAlpha: 0.5,\\r\\n\\t\\tgraphLineAlpha: 0,\\r\\n\\t\\tselectedBackgroundColor: \\\"#FFFFFF\\\",\\r\\n\\t\\tselectedBackgroundAlpha: 0.4,\\r\\n\\t\\tgridAlpha: 0.15\\r\\n\\t},\\r\\n\\r\\n\\tChartCursor: {\\r\\n\\t\\tcursorColor: \\\"#000000\\\",\\r\\n\\t\\tcolor: \\\"#FFFFFF\\\",\\r\\n\\t\\tcursorAlpha: 0.5\\r\\n\\t},\\r\\n\\r\\n\\tAmLegend: {\\r\\n\\t\\tcolor: \\\"#000000\\\"\\r\\n\\t},\\r\\n\\r\\n\\tAmGraph: {\\r\\n\\t\\tlineAlpha: 0.9\\r\\n\\t},\\r\\n\\tGaugeArrow: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\talpha: 0.8,\\r\\n\\t\\tnailAlpha: 0,\\r\\n\\t\\tinnerRadius: \\\"40%\\\",\\r\\n\\t\\tnailRadius: 15,\\r\\n\\t\\tstartWidth: 15,\\r\\n\\t\\tborderAlpha: 0.8,\\r\\n\\t\\tnailBorderAlpha: 0\\r\\n\\t},\\r\\n\\r\\n\\tGaugeAxis: {\\r\\n\\t\\ttickColor: \\\"#000000\\\",\\r\\n\\t\\ttickAlpha: 1,\\r\\n\\t\\ttickLength: 15,\\r\\n\\t\\tminorTickLength: 8,\\r\\n\\t\\taxisThickness: 3,\\r\\n\\t\\taxisColor: '#000000',\\r\\n\\t\\taxisAlpha: 1,\\r\\n\\t\\tbandAlpha: 0.8\\r\\n\\t},\\r\\n\\r\\n\\tTrendLine: {\\r\\n\\t\\tlineColor: \\\"#c03246\\\",\\r\\n\\t\\tlineAlpha: 0.8\\r\\n\\t},\\r\\n\\r\\n\\t// ammap\\r\\n\\tAreasSettings: {\\r\\n\\t\\talpha: 0.8,\\r\\n\\t\\tcolor: \\\"#67b7dc\\\",\\r\\n\\t\\tcolorSolid: \\\"#003767\\\",\\r\\n\\t\\tunlistedAreasAlpha: 0.4,\\r\\n\\t\\tunlistedAreasColor: \\\"#000000\\\",\\r\\n\\t\\toutlineColor: \\\"#FFFFFF\\\",\\r\\n\\t\\toutlineAlpha: 0.5,\\r\\n\\t\\toutlineThickness: 0.5,\\r\\n\\t\\trollOverColor: \\\"#3c5bdc\\\",\\r\\n\\t\\trollOverOutlineColor: \\\"#FFFFFF\\\",\\r\\n\\t\\tselectedOutlineColor: \\\"#FFFFFF\\\",\\r\\n\\t\\tselectedColor: \\\"#f15135\\\",\\r\\n\\t\\tunlistedAreasOutlineColor: \\\"#FFFFFF\\\",\\r\\n\\t\\tunlistedAreasOutlineAlpha: 0.5\\r\\n\\t},\\r\\n\\r\\n\\tLinesSettings: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\talpha: 0.8\\r\\n\\t},\\r\\n\\r\\n\\tImagesSettings: {\\r\\n\\t\\talpha: 0.8,\\r\\n\\t\\tlabelColor: \\\"#000000\\\",\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tlabelRollOverColor: \\\"#3c5bdc\\\"\\r\\n\\t},\\r\\n\\r\\n\\tZoomControl: {\\r\\n\\t\\tbuttonFillAlpha:0.7,\\r\\n\\t\\tbuttonIconColor:\\\"#a7a7a7\\\"\\r\\n\\t},\\r\\n\\r\\n\\tSmallMap: {\\r\\n\\t\\tmapColor: \\\"#000000\\\",\\r\\n\\t\\trectangleColor: \\\"#f15135\\\",\\r\\n\\t\\tbackgroundColor: \\\"#FFFFFF\\\",\\r\\n\\t\\tbackgroundAlpha: 0.7,\\r\\n\\t\\tborderThickness: 1,\\r\\n\\t\\tborderAlpha: 0.8\\r\\n\\t},\\r\\n\\r\\n\\t// the defaults below are set using CSS syntax, you can use any existing css property\\r\\n\\t// if you don't use Stock chart, you can delete lines below\\r\\n\\tPeriodSelector: {\\r\\n\\t\\tcolor: \\\"#000000\\\"\\r\\n\\t},\\r\\n\\r\\n\\tPeriodButton: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tbackground: \\\"transparent\\\",\\r\\n\\t\\topacity: 0.7,\\r\\n\\t\\tborder: \\\"1px solid rgba(0, 0, 0, .3)\\\",\\r\\n\\t\\tMozBorderRadius: \\\"5px\\\",\\r\\n\\t\\tborderRadius: \\\"5px\\\",\\r\\n\\t\\tmargin: \\\"1px\\\",\\r\\n\\t\\toutline: \\\"none\\\",\\r\\n\\t\\tboxSizing: \\\"border-box\\\"\\r\\n\\t},\\r\\n\\r\\n\\tPeriodButtonSelected: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tbackgroundColor: \\\"#b9cdf5\\\",\\r\\n\\t\\tborder: \\\"1px solid rgba(0, 0, 0, .3)\\\",\\r\\n\\t\\tMozBorderRadius: \\\"5px\\\",\\r\\n\\t\\tborderRadius: \\\"5px\\\",\\r\\n\\t\\tmargin: \\\"1px\\\",\\r\\n\\t\\toutline: \\\"none\\\",\\r\\n\\t\\topacity: 1,\\r\\n\\t\\tboxSizing: \\\"border-box\\\"\\r\\n\\t},\\r\\n\\r\\n\\tPeriodInputField: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tbackground: \\\"transparent\\\",\\r\\n\\t\\tborder: \\\"1px solid rgba(0, 0, 0, .3)\\\",\\r\\n\\t\\toutline: \\\"none\\\"\\r\\n\\t},\\r\\n\\r\\n\\tDataSetSelector: {\\r\\n\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tselectedBackgroundColor: \\\"#b9cdf5\\\",\\r\\n\\t\\trollOverBackgroundColor: \\\"#a8b0e4\\\"\\r\\n\\t},\\r\\n\\r\\n\\tDataSetCompareList: {\\r\\n\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\tlineHeight: \\\"100%\\\",\\r\\n\\t\\tboxSizing: \\\"initial\\\",\\r\\n\\t\\twebkitBoxSizing: \\\"initial\\\",\\r\\n\\t\\tborder: \\\"1px solid rgba(0, 0, 0, .3)\\\"\\r\\n\\t},\\r\\n\\r\\n\\tDataSetSelect: {\\r\\n\\t\\tborder: \\\"1px solid rgba(0, 0, 0, .3)\\\",\\r\\n\\t\\toutline: \\\"none\\\"\\r\\n\\t}\\r\\n\\r\\n};\"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/script-loader/~/raw-loader!../Vendor/amcharts/themes/light.js\n ** module id = 28\n ** module chunks = 1\n **/","require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\Vendor\\\\amcharts\\\\plugins\\\\export\\\\export.js\"))\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../Vendor/amcharts/plugins/export/export.js\n ** module id = 29\n ** module chunks = 1\n **/","module.exports = \"/*\\r\\nPlugin Name: amCharts Export\\r\\nDescription: Adds export capabilities to amCharts products\\r\\nAuthor: Benjamin Maertz, amCharts\\r\\nVersion: 1.4.10\\r\\nAuthor URI: http://www.amcharts.com/\\r\\n\\r\\nCopyright 2015 amCharts\\r\\n\\r\\nLicensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\nyou may not use this file except in compliance with the License.\\r\\nYou may obtain a copy of the License at\\r\\n\\r\\n\\thttp://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\nUnless required by applicable law or agreed to in writing, software\\r\\ndistributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\nSee the License for the specific language governing permissions and\\r\\nlimitations under the License.\\r\\n\\r\\nPlease note that the above license covers only this plugin. It by all means does\\r\\nnot apply to any other amCharts products that are covered by different licenses.\\r\\n*/\\r\\n\\r\\n/*\\r\\n ** Polyfill translation\\r\\n */\\r\\nif ( !AmCharts.translations[ \\\"export\\\" ] ) {\\r\\n\\tAmCharts.translations[ \\\"export\\\" ] = {}\\r\\n}\\r\\nif ( !AmCharts.translations[ \\\"export\\\" ][ \\\"en\\\" ] ) {\\r\\n\\tAmCharts.translations[ \\\"export\\\" ][ \\\"en\\\" ] = {\\r\\n\\t\\t\\\"fallback.save.text\\\": \\\"CTRL + C to copy the data into the clipboard.\\\",\\r\\n\\t\\t\\\"fallback.save.image\\\": \\\"Rightclick -> Save picture as... to save the image.\\\",\\r\\n\\r\\n\\t\\t\\\"capturing.delayed.menu.label\\\": \\\"{{duration}}\\\",\\r\\n\\t\\t\\\"capturing.delayed.menu.title\\\": \\\"Click to cancel\\\",\\r\\n\\r\\n\\t\\t\\\"menu.label.print\\\": \\\"Print\\\",\\r\\n\\t\\t\\\"menu.label.undo\\\": \\\"Undo\\\",\\r\\n\\t\\t\\\"menu.label.redo\\\": \\\"Redo\\\",\\r\\n\\t\\t\\\"menu.label.cancel\\\": \\\"Cancel\\\",\\r\\n\\r\\n\\t\\t\\\"menu.label.save.image\\\": \\\"Download as ...\\\",\\r\\n\\t\\t\\\"menu.label.save.data\\\": \\\"Save as ...\\\",\\r\\n\\r\\n\\t\\t\\\"menu.label.draw\\\": \\\"Annotate ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.change\\\": \\\"Change ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.add\\\": \\\"Add ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.shapes\\\": \\\"Shape ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.colors\\\": \\\"Color ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.widths\\\": \\\"Size ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.opacities\\\": \\\"Opacity ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.text\\\": \\\"Text\\\",\\r\\n\\r\\n\\t\\t\\\"menu.label.draw.modes\\\": \\\"Mode ...\\\",\\r\\n\\t\\t\\\"menu.label.draw.modes.pencil\\\": \\\"Pencil\\\",\\r\\n\\t\\t\\\"menu.label.draw.modes.line\\\": \\\"Line\\\",\\r\\n\\t\\t\\\"menu.label.draw.modes.arrow\\\": \\\"Arrow\\\"\\r\\n\\t}\\r\\n}\\r\\n\\r\\n/*\\r\\n ** Polyfill export class\\r\\n */\\r\\n( function() {\\r\\n\\tAmCharts[ \\\"export\\\" ] = function( chart, config ) {\\r\\n\\t\\tvar _this = {\\r\\n\\t\\t\\tname: \\\"export\\\",\\r\\n\\t\\t\\tversion: \\\"1.4.10\\\",\\r\\n\\t\\t\\tlibs: {\\r\\n\\t\\t\\t\\tasync: true,\\r\\n\\t\\t\\t\\tautoLoad: true,\\r\\n\\t\\t\\t\\treload: false,\\r\\n\\t\\t\\t\\tresources: [ {\\r\\n\\t\\t\\t\\t\\t\\\"pdfmake/pdfmake.js\\\": [ \\\"pdfmake/vfs_fonts.js\\\" ],\\r\\n\\t\\t\\t\\t\\t\\\"jszip/jszip.js\\\": [ \\\"xlsx/xlsx.js\\\" ]\\r\\n\\t\\t\\t\\t}, \\\"fabric.js/fabric.js\\\", \\\"FileSaver.js/FileSaver.js\\\" ],\\r\\n\\t\\t\\t\\tnamespaces: {\\r\\n\\t\\t\\t\\t\\t\\\"pdfmake.js\\\": \\\"pdfMake\\\",\\r\\n\\t\\t\\t\\t\\t\\\"jszip.js\\\": \\\"JSZip\\\",\\r\\n\\t\\t\\t\\t\\t\\\"xlsx.js\\\": \\\"XLSX\\\",\\r\\n\\t\\t\\t\\t\\t\\\"fabric.js\\\": \\\"fabric\\\",\\r\\n\\t\\t\\t\\t\\t\\\"FileSaver.js\\\": \\\"saveAs\\\"\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tconfig: {},\\r\\n\\t\\t\\tsetup: {\\r\\n\\t\\t\\t\\tchart: chart,\\r\\n\\t\\t\\t\\thasBlob: false,\\r\\n\\t\\t\\t\\twrapper: false\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tdrawing: {\\r\\n\\t\\t\\t\\tenabled: false,\\r\\n\\t\\t\\t\\tundos: [],\\r\\n\\t\\t\\t\\tredos: [],\\r\\n\\t\\t\\t\\tbuffer: {\\r\\n\\t\\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\tx1: 0,\\r\\n\\t\\t\\t\\t\\t\\ty1: 0,\\r\\n\\t\\t\\t\\t\\t\\tx2: 0,\\r\\n\\t\\t\\t\\t\\t\\ty2: 0,\\r\\n\\t\\t\\t\\t\\t\\txD: 0,\\r\\n\\t\\t\\t\\t\\t\\tyD: 0\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\thandler: {\\r\\n\\t\\t\\t\\t\\tundo: function( options, skipped ) {\\r\\n\\t\\t\\t\\t\\t\\tvar item = _this.drawing.undos.pop();\\r\\n\\t\\t\\t\\t\\t\\tif ( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\titem.selectable = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.redos.push( item );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.action == \\\"added\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.remove( item.target );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tvar state = JSON.parse( item.state );\\r\\n\\t\\t\\t\\t\\t\\t\\titem.target.set( state );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.target instanceof fabric.Group ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.change( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcolor: state.cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\twidth: state.cfg.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: state.cfg.opacity\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, true, item.target );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// RECALL\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.state == item.target.recentState && !skipped ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.undo( item, true );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tredo: function( options, skipped ) {\\r\\n\\t\\t\\t\\t\\t\\tvar item = _this.drawing.redos.pop();\\r\\n\\t\\t\\t\\t\\t\\tif ( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\titem.selectable = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.undos.push( item );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.action == \\\"added\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( item.target );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tvar state = JSON.parse( item.state );\\r\\n\\t\\t\\t\\t\\t\\t\\titem.target.recentState = item.state;\\r\\n\\t\\t\\t\\t\\t\\t\\titem.target.set( state );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.target instanceof fabric.Group ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.change( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcolor: state.cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\twidth: state.cfg.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: state.cfg.opacity\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, true, item.target );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// RECALL\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.action == \\\"addified\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.redo();\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tdone: function( options ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.buffer.enabled = false;\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.undos = [];\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.redos = [];\\r\\n\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.deactivateAll();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.setup.wrapper ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.removeChild( _this.setup.wrapper );\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.wrapper = false;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tadd: function( options ) {\\r\\n\\t\\t\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t\\t\\ttop: _this.setup.fabric.height / 2,\\r\\n\\t\\t\\t\\t\\t\\t\\tleft: _this.setup.fabric.width / 2\\r\\n\\t\\t\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\t\\t\\tvar method = cfg.url.indexOf( \\\".svg\\\" ) != -1 ? fabric.loadSVGFromURL : fabric.Image.fromURL;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tmethod( cfg.url, function( objects, options ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar group = options !== undefined ? fabric.util.groupSVGElements( objects, options ) : objects;\\r\\n\\t\\t\\t\\t\\t\\t\\tvar ratio = false;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// RESCALE ONLY IF IT EXCEEDS THE CANVAS\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.height > _this.setup.fabric.height || group.width > _this.setup.fabric.width ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tratio = ( _this.setup.fabric.height / 2 ) / group.height;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.top > _this.setup.fabric.height ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.top = _this.setup.fabric.height / 2;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.left > _this.setup.fabric.width ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.left = _this.setup.fabric.width / 2;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toriginX: \\\"center\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toriginY: \\\"center\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttop: cfg.top,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tleft: cfg.left,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\twidth: ratio ? group.width * ratio : group.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\theight: ratio ? group.height * ratio : group.height,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfill: _this.drawing.color\\r\\n\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( group );\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tchange: function( options, skipped, target ) {\\r\\n\\t\\t\\t\\t\\t\\tvar cfg = _this.deepMerge( {}, options || {} );\\r\\n\\t\\t\\t\\t\\t\\tvar state, i1, rgba;\\r\\n\\t\\t\\t\\t\\t\\tvar current = target || _this.drawing.buffer.target;\\r\\n\\t\\t\\t\\t\\t\\tvar objects = current ? current._objects ? current._objects : [ current ] : null;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// UPDATE DRAWING OBJECT\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.mode ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.mode = cfg.mode;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.width ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.width = cfg.width;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.fontSize = cfg.width * 3;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.fontSize ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.fontSize = cfg.fontSize;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.color ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.color = cfg.color;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.opacity ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.opacity = cfg.opacity;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// APPLY OPACITY ON CURRENT COLOR\\r\\n\\t\\t\\t\\t\\t\\trgba = new fabric.Color( _this.drawing.color ).getSource();\\r\\n\\t\\t\\t\\t\\t\\trgba.pop();\\r\\n\\t\\t\\t\\t\\t\\trgba.push( _this.drawing.opacity );\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.color = \\\"rgba(\\\" + rgba.join() + \\\")\\\";\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.freeDrawingBrush.color = _this.drawing.color;\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.freeDrawingBrush.width = _this.drawing.width;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// UPDATE CURRENT SELECTION\\r\\n\\t\\t\\t\\t\\t\\tif ( current ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tstate = JSON.parse( current.recentState ).cfg;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// UPDATE GIVE OPTIONS ONLY\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( state ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.color = cfg.color || state.color;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.width = cfg.width || state.width;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.opacity = cfg.opacity || state.opacity;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.fontSize = cfg.fontSize || cfg.width * 3;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\trgba = new fabric.Color( cfg.color ).getSource();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\trgba.pop();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\trgba.push( cfg.opacity );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.color = \\\"rgba(\\\" + rgba.join() + \\\")\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// UPDATE OBJECTS\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < objects.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif (\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ] instanceof fabric.Text ||\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ] instanceof fabric.PathGroup ||\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ] instanceof fabric.Triangle\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.color || cfg.opacity ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfill: cfg.color\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.fontSize ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfontSize: cfg.fontSize\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if (\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ] instanceof fabric.Path ||\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ] instanceof fabric.Line\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( current instanceof fabric.Group ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.color || cfg.opacity ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstroke: cfg.color\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.color || cfg.opacity ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstroke: cfg.color\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.width ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tobjects[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstrokeWidth: cfg.width\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ADD UNDO\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( !skipped ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstate = JSON.stringify( _this.deepMerge( current.saveState().originalState, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcfg: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcolor: cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\twidth: cfg.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: cfg.opacity\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcurrent.recentState = state;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.redos = [];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.undos.push( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"modified\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttarget: current,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tstate: state\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\ttext: function( options ) {\\r\\n\\t\\t\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t\\t\\ttext: _this.i18l( \\\"menu.label.draw.text\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\ttop: _this.setup.fabric.height / 2,\\r\\n\\t\\t\\t\\t\\t\\t\\tleft: _this.setup.fabric.width / 2,\\r\\n\\t\\t\\t\\t\\t\\t\\tfontSize: _this.drawing.fontSize,\\r\\n\\t\\t\\t\\t\\t\\t\\tfontFamily: _this.setup.chart.fontFamily || \\\"Verdana\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\tfill: _this.drawing.color\\r\\n\\t\\t\\t\\t\\t\\t}, options || {} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tcfg.click = function() {};\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tvar text = new fabric.IText( cfg.text, cfg );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( text );\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.setActiveObject( text );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\ttext.selectAll();\\r\\n\\t\\t\\t\\t\\t\\ttext.enterEditing();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\treturn text;\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tline: function( options ) {\\r\\n\\t\\t\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t\\t\\tx1: ( _this.setup.fabric.width / 2 ) - ( _this.setup.fabric.width / 10 ),\\r\\n\\t\\t\\t\\t\\t\\t\\tx2: ( _this.setup.fabric.width / 2 ) + ( _this.setup.fabric.width / 10 ),\\r\\n\\t\\t\\t\\t\\t\\t\\ty1: ( _this.setup.fabric.height / 2 ),\\r\\n\\t\\t\\t\\t\\t\\t\\ty2: ( _this.setup.fabric.height / 2 ),\\r\\n\\t\\t\\t\\t\\t\\t\\tangle: 90,\\r\\n\\t\\t\\t\\t\\t\\t\\tstrokeLineCap: _this.drawing.lineCap,\\r\\n\\t\\t\\t\\t\\t\\t\\tarrow: _this.drawing.arrow,\\r\\n\\t\\t\\t\\t\\t\\t\\tcolor: _this.drawing.color,\\r\\n\\t\\t\\t\\t\\t\\t\\twidth: _this.drawing.width,\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup: [],\\r\\n\\t\\t\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\t\\t\\tvar i1, arrow, arrowTop, arrowLeft;\\r\\n\\t\\t\\t\\t\\t\\tvar line = new fabric.Line( [ cfg.x1, cfg.y1, cfg.x2, cfg.y2 ], {\\r\\n\\t\\t\\t\\t\\t\\t\\tstroke: cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\tstrokeWidth: cfg.width,\\r\\n\\t\\t\\t\\t\\t\\t\\tstrokeLineCap: cfg.strokeLineCap\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tcfg.group.push( line );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.arrow ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg.angle = cfg.angle ? cfg.angle : _this.getAngle( cfg.x1, cfg.y1, cfg.x2, cfg.y2 );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.arrow == \\\"start\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowTop = cfg.y1 + ( cfg.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowLeft = cfg.x1 + ( cfg.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t} else if ( cfg.arrow == \\\"middle\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowTop = cfg.y2 + ( cfg.width / 2 ) - ( ( cfg.y2 - cfg.y1 ) / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowLeft = cfg.x2 + ( cfg.width / 2 ) - ( ( cfg.x2 - cfg.x1 ) / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t} else { // arrow: end\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowTop = cfg.y2 + ( cfg.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrowLeft = cfg.x2 + ( cfg.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tarrow = new fabric.Triangle( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttop: arrowTop,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tleft: arrowLeft,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfill: cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\theight: cfg.width * 7,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\twidth: cfg.width * 7,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tangle: cfg.angle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toriginX: \\\"center\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toriginY: \\\"bottom\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg.group.push( arrow );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.action != \\\"config\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.arrow ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar group = new fabric.Group( cfg.group );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcfg: cfg,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfill: cfg.color,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: cfg.action,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tselectable: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tknown: cfg.action == \\\"change\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.action == \\\"change\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.setActiveObject( group );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( group );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\treturn group;\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( line );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\treturn line;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < cfg.group.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.group[ i1 ].noUndo = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( cfg.group[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\treturn cfg;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tdefaults: {\\r\\n\\t\\t\\t\\tposition: \\\"top-right\\\",\\r\\n\\t\\t\\t\\tfileName: \\\"amCharts\\\",\\r\\n\\t\\t\\t\\taction: \\\"download\\\",\\r\\n\\t\\t\\t\\toverflow: true,\\r\\n\\t\\t\\t\\tpath: ( ( chart.path || \\\"\\\" ) + \\\"plugins/export/\\\" ),\\r\\n\\t\\t\\t\\tformats: {\\r\\n\\t\\t\\t\\t\\tJPG: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"image/jpg\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"jpg\\\",\\r\\n\\t\\t\\t\\t\\t\\tcapture: true\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tPNG: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"image/png\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"png\\\",\\r\\n\\t\\t\\t\\t\\t\\tcapture: true\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tSVG: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"text/xml\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"svg\\\",\\r\\n\\t\\t\\t\\t\\t\\tcapture: true\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tPDF: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"application/pdf\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"pdf\\\",\\r\\n\\t\\t\\t\\t\\t\\tcapture: true\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tCSV: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"text/plain\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"csv\\\"\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tJSON: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"text/plain\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"json\\\"\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tXLSX: {\\r\\n\\t\\t\\t\\t\\t\\tmimeType: \\\"application/octet-stream\\\",\\r\\n\\t\\t\\t\\t\\t\\textension: \\\"xlsx\\\"\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tfabric: {\\r\\n\\t\\t\\t\\t\\tbackgroundColor: \\\"#FFFFFF\\\",\\r\\n\\t\\t\\t\\t\\tremoveImages: true,\\r\\n\\t\\t\\t\\t\\tselection: false,\\r\\n\\t\\t\\t\\t\\tdrawing: {\\r\\n\\t\\t\\t\\t\\t\\tenabled: true,\\r\\n\\t\\t\\t\\t\\t\\tarrow: \\\"end\\\",\\r\\n\\t\\t\\t\\t\\t\\tlineCap: \\\"butt\\\",\\r\\n\\t\\t\\t\\t\\t\\tmode: \\\"pencil\\\",\\r\\n\\t\\t\\t\\t\\t\\tmodes: [ \\\"pencil\\\", \\\"line\\\", \\\"arrow\\\" ],\\r\\n\\t\\t\\t\\t\\t\\tcolor: \\\"#000000\\\",\\r\\n\\t\\t\\t\\t\\t\\tcolors: [ \\\"#000000\\\", \\\"#FFFFFF\\\", \\\"#FF0000\\\", \\\"#00FF00\\\", \\\"#0000FF\\\" ],\\r\\n\\t\\t\\t\\t\\t\\tshapes: [ \\\"11.svg\\\", \\\"14.svg\\\", \\\"16.svg\\\", \\\"17.svg\\\", \\\"20.svg\\\", \\\"27.svg\\\" ],\\r\\n\\t\\t\\t\\t\\t\\twidth: 1,\\r\\n\\t\\t\\t\\t\\t\\tfontSize: 11,\\r\\n\\t\\t\\t\\t\\t\\twidths: [ 1, 5, 10, 15 ],\\r\\n\\t\\t\\t\\t\\t\\topacity: 1,\\r\\n\\t\\t\\t\\t\\t\\topacities: [ 1, 0.8, 0.6, 0.4, 0.2 ],\\r\\n\\t\\t\\t\\t\\t\\tmenu: undefined,\\r\\n\\t\\t\\t\\t\\t\\tautoClose: true\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tpdfMake: {\\r\\n\\t\\t\\t\\t\\tpageSize: \\\"A4\\\",\\r\\n\\t\\t\\t\\t\\tpageOrientation: \\\"portrait\\\",\\r\\n\\t\\t\\t\\t\\timages: {},\\r\\n\\t\\t\\t\\t\\tcontent: [ \\\"Saved from:\\\", window.location.href, {\\r\\n\\t\\t\\t\\t\\t\\timage: \\\"reference\\\",\\r\\n\\t\\t\\t\\t\\t\\tfit: [ 523.28, 769.89 ]\\r\\n\\t\\t\\t\\t\\t} ]\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tmenu: undefined,\\r\\n\\t\\t\\t\\tdivId: null,\\r\\n\\t\\t\\t\\tmenuReviver: null,\\r\\n\\t\\t\\t\\tmenuWalker: null,\\r\\n\\t\\t\\t\\tfallback: true,\\r\\n\\t\\t\\t\\tkeyListener: true,\\r\\n\\t\\t\\t\\tfileListener: true\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Returns translated message, takes english as default\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ti18l: function( key, language ) {\\r\\n\\t\\t\\t\\tvar lang = language ? langugage : _this.setup.chart.language ? _this.setup.chart.language : \\\"en\\\";\\r\\n\\t\\t\\t\\tvar catalog = AmCharts.translations[ _this.name ][ lang ] || AmCharts.translations[ _this.name ][ \\\"en\\\" ];\\r\\n\\r\\n\\t\\t\\t\\treturn catalog[ key ] || key;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates download file; if unsupported offers fallback to save manually\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tdownload: function( data, type, filename ) {\\r\\n\\t\\t\\t\\t// SAVE\\r\\n\\t\\t\\t\\tif ( window.saveAs && _this.setup.hasBlob ) {\\r\\n\\t\\t\\t\\t\\tvar blob = _this.toBlob( {\\r\\n\\t\\t\\t\\t\\t\\tdata: data,\\r\\n\\t\\t\\t\\t\\t\\ttype: type\\r\\n\\t\\t\\t\\t\\t}, function( data ) {\\r\\n\\t\\t\\t\\t\\t\\tsaveAs( data, filename );\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t// FALLBACK TEXTAREA\\r\\n\\t\\t\\t\\t} else if ( _this.config.fallback && type == \\\"text/plain\\\" ) {\\r\\n\\t\\t\\t\\t\\tvar div = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t\\tvar msg = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t\\tvar textarea = document.createElement( \\\"textarea\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\tmsg.innerHTML = _this.i18l( \\\"fallback.save.text\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\tdiv.appendChild( msg );\\r\\n\\t\\t\\t\\t\\tdiv.appendChild( textarea );\\r\\n\\t\\t\\t\\t\\tmsg.setAttribute( \\\"class\\\", \\\"amcharts-export-fallback-message\\\" );\\r\\n\\t\\t\\t\\t\\tdiv.setAttribute( \\\"class\\\", \\\"amcharts-export-fallback\\\" );\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.appendChild( div );\\r\\n\\r\\n\\t\\t\\t\\t\\t// FULFILL TEXTAREA AND PRESELECT\\r\\n\\t\\t\\t\\t\\ttextarea.setAttribute( \\\"readonly\\\", \\\"\\\" );\\r\\n\\t\\t\\t\\t\\ttextarea.value = data;\\r\\n\\t\\t\\t\\t\\ttextarea.focus();\\r\\n\\t\\t\\t\\t\\ttextarea.select();\\r\\n\\r\\n\\t\\t\\t\\t\\t// UPDATE MENU\\r\\n\\t\\t\\t\\t\\t_this.createMenu( [ {\\r\\n\\t\\t\\t\\t\\t\\t\\\"class\\\": \\\"export-main export-close\\\",\\r\\n\\t\\t\\t\\t\\t\\tlabel: \\\"Done\\\",\\r\\n\\t\\t\\t\\t\\t\\tclick: function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.removeChild( div );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} ] );\\r\\n\\r\\n\\t\\t\\t\\t\\t// FALLBACK IMAGE\\r\\n\\t\\t\\t\\t} else if ( _this.config.fallback && type.split( \\\"/\\\" )[ 0 ] == \\\"image\\\" ) {\\r\\n\\t\\t\\t\\t\\tvar div = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t\\tvar msg = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t\\tvar img = _this.toImage( {\\r\\n\\t\\t\\t\\t\\t\\tdata: data\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\tmsg.innerHTML = _this.i18l( \\\"fallback.save.image\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t// FULFILL TEXTAREA AND PRESELECT\\r\\n\\t\\t\\t\\t\\tdiv.appendChild( msg );\\r\\n\\t\\t\\t\\t\\tdiv.appendChild( img );\\r\\n\\t\\t\\t\\t\\tmsg.setAttribute( \\\"class\\\", \\\"amcharts-export-fallback-message\\\" );\\r\\n\\t\\t\\t\\t\\tdiv.setAttribute( \\\"class\\\", \\\"amcharts-export-fallback\\\" );\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.appendChild( div );\\r\\n\\r\\n\\t\\t\\t\\t\\t// UPDATE MENU\\r\\n\\t\\t\\t\\t\\t_this.createMenu( [ {\\r\\n\\t\\t\\t\\t\\t\\t\\\"class\\\": \\\"export-main export-close\\\",\\r\\n\\t\\t\\t\\t\\t\\tlabel: \\\"Done\\\",\\r\\n\\t\\t\\t\\t\\t\\tclick: function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.removeChild( div );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} ] );\\r\\n\\r\\n\\t\\t\\t\\t\\t// ERROR\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\tthrow new Error( \\\"Unable to create file. Ensure saveAs (FileSaver.js) is supported.\\\" );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates script, links tags and places them into the document's head\\r\\n\\t\\t\\t * In case of reload it replaces the node to force the download\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tloadResource: function( src, addons ) {\\r\\n\\t\\t\\t\\tvar i1, exist, node, item, check, type;\\r\\n\\t\\t\\t\\tvar url = src.indexOf( \\\"//\\\" ) != -1 ? src : [ _this.libs.path, src ].join( \\\"\\\" );\\r\\n\\r\\n\\t\\t\\t\\tfunction callback() {\\r\\n\\t\\t\\t\\t\\tif ( addons ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < addons.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.loadResource( addons[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tif ( src.indexOf( \\\".js\\\" ) != -1 ) {\\r\\n\\t\\t\\t\\t\\tnode = document.createElement( \\\"script\\\" );\\r\\n\\t\\t\\t\\t\\tnode.setAttribute( \\\"type\\\", \\\"text/javascript\\\" );\\r\\n\\t\\t\\t\\t\\tnode.setAttribute( \\\"src\\\", url );\\r\\n\\t\\t\\t\\t\\tif ( _this.libs.async ) {\\r\\n\\t\\t\\t\\t\\t\\tnode.setAttribute( \\\"async\\\", \\\"\\\" );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t} else if ( src.indexOf( \\\".css\\\" ) != -1 ) {\\r\\n\\t\\t\\t\\t\\tnode = document.createElement( \\\"link\\\" );\\r\\n\\t\\t\\t\\t\\tnode.setAttribute( \\\"type\\\", \\\"text/css\\\" );\\r\\n\\t\\t\\t\\t\\tnode.setAttribute( \\\"rel\\\", \\\"stylesheet\\\" );\\r\\n\\t\\t\\t\\t\\tnode.setAttribute( \\\"href\\\", url );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// NODE CHECK\\r\\n\\t\\t\\t\\tfor ( i1 = 0; i1 < document.head.childNodes.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\titem = document.head.childNodes[ i1 ];\\r\\n\\t\\t\\t\\t\\tcheck = item ? ( item.src || item.href ) : false;\\r\\n\\t\\t\\t\\t\\ttype = item ? item.tagName : false;\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( item && check && check.indexOf( src ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.libs.reload ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tdocument.head.removeChild( item );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\texist = true;\\r\\n\\t\\t\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// NAMESPACE CHECK\\r\\n\\t\\t\\t\\tfor ( i1 in _this.libs.namespaces ) {\\r\\n\\t\\t\\t\\t\\tvar namespace = _this.libs.namespaces[ i1 ];\\r\\n\\t\\t\\t\\t\\tvar check = src.toLowerCase();\\r\\n\\t\\t\\t\\t\\tvar item = i1.toLowerCase();\\r\\n\\t\\t\\t\\t\\tif ( check.indexOf( item ) != -1 && window[ namespace ] !== undefined ) {\\r\\n\\t\\t\\t\\t\\t\\texist = true;\\r\\n\\t\\t\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tif ( !exist || _this.libs.reload ) {\\r\\n\\t\\t\\t\\t\\tnode.addEventListener( \\\"load\\\", callback );\\r\\n\\t\\t\\t\\t\\tdocument.head.appendChild( node );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Walker to generate the script,link tags\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tloadDependencies: function() {\\r\\n\\t\\t\\t\\tvar i1, i2;\\r\\n\\t\\t\\t\\tif ( _this.libs.autoLoad ) {\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.libs.resources.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.libs.resources[ i1 ] instanceof Object ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 in _this.libs.resources[ i1 ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.loadResource( i2, _this.libs.resources[ i1 ][ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.loadResource( _this.libs.resources[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Converts string to number\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tpxToNumber: function( attr, returnUndefined ) {\\r\\n\\t\\t\\t\\tif ( !attr && returnUndefined ) {\\r\\n\\t\\t\\t\\t\\treturn undefined;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn Number( String( attr ).replace( \\\"px\\\", \\\"\\\" ) ) || 0;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Converts number to string\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tnumberToPx: function( attr ) {\\r\\n\\t\\t\\t\\treturn String( attr ) + \\\"px\\\";\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Recursive method to merge the given objects together\\r\\n\\t\\t\\t * Overwrite flag replaces the value instead to crawl through\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tdeepMerge: function( a, b, overwrite ) {\\r\\n\\t\\t\\t\\tvar i1, v, type = b instanceof Array ? \\\"array\\\" : \\\"object\\\";\\r\\n\\r\\n\\t\\t\\t\\tfor ( i1 in b ) {\\r\\n\\t\\t\\t\\t\\t// PREVENT METHODS\\r\\n\\t\\t\\t\\t\\tif ( type == \\\"array\\\" && isNaN( i1 ) ) {\\r\\n\\t\\t\\t\\t\\t\\tcontinue;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tv = b[ i1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t// NEW\\r\\n\\t\\t\\t\\t\\tif ( a[ i1 ] == undefined || overwrite ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( v instanceof Array ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = new Array();\\r\\n\\t\\t\\t\\t\\t\\t} else if ( v instanceof Function ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = function() {};\\r\\n\\t\\t\\t\\t\\t\\t} else if ( v instanceof Date ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = new Date();\\r\\n\\t\\t\\t\\t\\t\\t} else if ( v instanceof Object ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = new Object();\\r\\n\\t\\t\\t\\t\\t\\t} else if ( v instanceof Number ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = new Number();\\r\\n\\t\\t\\t\\t\\t\\t} else if ( v instanceof String ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = new String();\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tif (\\r\\n\\t\\t\\t\\t\\t\\t( a instanceof Object || a instanceof Array ) &&\\r\\n\\t\\t\\t\\t\\t\\t( v instanceof Object || v instanceof Array ) &&\\r\\n\\t\\t\\t\\t\\t\\t!( v instanceof Function || v instanceof Date || _this.isElement( v ) ) &&\\r\\n\\t\\t\\t\\t\\t\\ti1 != \\\"chart\\\"\\r\\n\\t\\t\\t\\t\\t) {\\r\\n\\t\\t\\t\\t\\t\\t_this.deepMerge( a[ i1 ], v, overwrite );\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tif ( a instanceof Array && !overwrite ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta.push( v );\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\ta[ i1 ] = v;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn a;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Checks if given argument is a valid node\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tisElement: function( thingy ) {\\r\\n\\t\\t\\t\\treturn thingy instanceof Object && thingy && thingy.nodeType === 1;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Checks if given argument contains a hashbang and returns it\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tisHashbanged: function( thingy ) {\\r\\n\\t\\t\\t\\tvar str = String( thingy ).replace( /\\\\\\\"/g, \\\"\\\" );\\r\\n\\r\\n\\t\\t\\t\\treturn str.slice( 0, 3 ) == \\\"url\\\" ? str.slice( str.indexOf( \\\"#\\\" ) + 1, str.length - 1 ) : false;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Checks if given event has been thrown with pressed click / touch\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tisPressed: function( event ) {\\r\\n\\t\\t\\t\\t// IE EXCEPTION\\r\\n\\t\\t\\t\\tif ( event.type == \\\"mousemove\\\" && event.which === 1 ) {\\r\\n\\t\\t\\t\\t\\t// IGNORE\\r\\n\\r\\n\\t\\t\\t\\t\\t// OTHERS\\r\\n\\t\\t\\t\\t} else if (\\r\\n\\t\\t\\t\\t\\tevent.type == \\\"touchmove\\\" ||\\r\\n\\t\\t\\t\\t\\tevent.buttons === 1 ||\\r\\n\\t\\t\\t\\t\\tevent.button === 1 ||\\r\\n\\t\\t\\t\\t\\tevent.which === 1\\r\\n\\t\\t\\t\\t) {\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.isPressed = true;\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.isPressed = false;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn _this.drawing.buffer.isPressed;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Checks if given source is within the current origin\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tisTainted: function( source ) {\\r\\n\\t\\t\\t\\tvar origin = String( window.location.origin || window.location.protocol + \\\"//\\\" + window.location.hostname + ( window.location.port ? ':' + window.location.port : '' ) );\\r\\n\\r\\n\\t\\t\\t\\t// CHECK IF TAINTED\\r\\n\\t\\t\\t\\tif (\\r\\n\\t\\t\\t\\t\\tsource &&\\r\\n\\t\\t\\t\\t\\tsource.indexOf( \\\"//\\\" ) != -1 &&\\r\\n\\t\\t\\t\\t\\tsource.indexOf( origin.replace( /.*:/, \\\"\\\" ) ) == -1\\r\\n\\t\\t\\t\\t) {\\r\\n\\t\\t\\t\\t\\treturn true;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/*\\r\\n\\t\\t\\t ** Checks several indicators for acceptance;\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tisSupported: function() {\\r\\n\\t\\t\\t\\t// CHECK CONFIG\\r\\n\\t\\t\\t\\tif ( !_this.config.enabled ) {\\r\\n\\t\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// CHECK IE; ATTEMPT TO ACCESS HEAD ELEMENT\\r\\n\\t\\t\\t\\tif ( AmCharts.isIE && AmCharts.IEversion <= 9 ) {\\r\\n\\t\\t\\t\\t\\tif ( !Array.prototype.indexOf || !document.head || _this.config.fallback === false ) {\\r\\n\\t\\t\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn true;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\r\\n\\t\\t\\tgetAngle: function( x1, y1, x2, y2 ) {\\r\\n\\t\\t\\t\\tvar x = x2 - x1;\\r\\n\\t\\t\\t\\tvar y = y2 - y1;\\r\\n\\t\\t\\t\\tvar angle;\\r\\n\\t\\t\\t\\tif ( x == 0 ) {\\r\\n\\t\\t\\t\\t\\tif ( y == 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tangle = 0;\\r\\n\\t\\t\\t\\t\\t} else if ( y > 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.PI / 2;\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.PI * 3 / 2;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t} else if ( y == 0 ) {\\r\\n\\t\\t\\t\\t\\tif ( x > 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tangle = 0;\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.PI;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\tif ( x < 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.atan( y / x ) + Math.PI;\\r\\n\\t\\t\\t\\t\\t} else if ( y < 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.atan( y / x ) + ( 2 * Math.PI );\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tangle = Math.atan( y / x );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn angle * 180 / Math.PI;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Recursive method which crawls upwards to gather the requested attribute\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tgatherAttribute: function( elm, attr, limit, lvl ) {\\r\\n\\t\\t\\t\\tvar value, lvl = lvl ? lvl : 0,\\r\\n\\t\\t\\t\\t\\tlimit = limit ? limit : 3;\\r\\n\\t\\t\\t\\tif ( elm ) {\\r\\n\\t\\t\\t\\t\\tvalue = elm.getAttribute( attr );\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( !value && lvl < limit ) {\\r\\n\\t\\t\\t\\t\\t\\treturn _this.gatherAttribute( elm.parentNode, attr, limit, lvl + 1 );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn value;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Recursive method which crawls upwards to gather the requested classname\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tgatherClassName: function( elm, className, limit, lvl ) {\\r\\n\\t\\t\\t\\tvar value, lvl = lvl ? lvl : 0,\\r\\n\\t\\t\\t\\t\\tlimit = limit ? limit : 3;\\r\\n\\r\\n\\t\\t\\t\\tif ( _this.isElement( elm ) ) {\\r\\n\\t\\t\\t\\t\\tvalue = ( elm.getAttribute( \\\"class\\\" ) || \\\"\\\" ).split( \\\" \\\" ).indexOf( className ) != -1;\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( !value && lvl < limit ) {\\r\\n\\t\\t\\t\\t\\t\\treturn _this.gatherClassName( elm.parentNode, className, limit, lvl + 1 );\\r\\n\\t\\t\\t\\t\\t} else if ( value ) {\\r\\n\\t\\t\\t\\t\\t\\tvalue = elm;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn value;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Collects the clip-paths and patterns\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tgatherElements: function( group, cfg, images ) {\\r\\n\\t\\t\\t\\tvar i1, i2;\\r\\n\\t\\t\\t\\tfor ( i1 = 0; i1 < group.children.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\tvar childNode = group.children[ i1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t// CLIPPATH\\r\\n\\t\\t\\t\\t\\tif ( childNode.tagName == \\\"clipPath\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tvar bbox = {};\\r\\n\\t\\t\\t\\t\\t\\tvar transform = fabric.parseTransformAttribute( _this.gatherAttribute( childNode, \\\"transform\\\" ) );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// HIDE SIBLINGS; GATHER IT'S DIMENSIONS\\r\\n\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < childNode.childNodes.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tchildNode.childNodes[ i2 ].setAttribute( \\\"fill\\\", \\\"transparent\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\tbbox = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tx: _this.pxToNumber( childNode.childNodes[ i2 ].getAttribute( \\\"x\\\" ) ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ty: _this.pxToNumber( childNode.childNodes[ i2 ].getAttribute( \\\"y\\\" ) ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\twidth: _this.pxToNumber( childNode.childNodes[ i2 ].getAttribute( \\\"width\\\" ) ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\theight: _this.pxToNumber( childNode.childNodes[ i2 ].getAttribute( \\\"height\\\" ) )\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tgroup.clippings[ childNode.id ] = {\\r\\n\\t\\t\\t\\t\\t\\t\\tsvg: childNode,\\r\\n\\t\\t\\t\\t\\t\\t\\tbbox: bbox,\\r\\n\\t\\t\\t\\t\\t\\t\\ttransform: transform\\r\\n\\t\\t\\t\\t\\t\\t};\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// PATTERN\\r\\n\\t\\t\\t\\t\\t} else if ( childNode.tagName == \\\"pattern\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tvar props = {\\r\\n\\t\\t\\t\\t\\t\\t\\tnode: childNode,\\r\\n\\t\\t\\t\\t\\t\\t\\tsource: childNode.getAttribute( \\\"xlink:href\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\twidth: Number( childNode.getAttribute( \\\"width\\\" ) ),\\r\\n\\t\\t\\t\\t\\t\\t\\theight: Number( childNode.getAttribute( \\\"height\\\" ) ),\\r\\n\\t\\t\\t\\t\\t\\t\\trepeat: \\\"repeat\\\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// GATHER BACKGROUND COLOR\\r\\n\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < childNode.childNodes.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( childNode.childNodes[ i2 ].tagName == \\\"rect\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tprops.fill = childNode.childNodes[ i2 ].getAttribute( \\\"fill\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// TAINTED\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.removeImages && _this.isTainted( props.source ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.patterns[ childNode.id ] = props.fill ? props.fill : \\\"transparent\\\";\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\timages.included++;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.patterns[ props.node.id ] = props;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// IMAGES\\r\\n\\t\\t\\t\\t\\t} else if ( childNode.tagName == \\\"image\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\timages.included++;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// LOAD IMAGE MANUALLY; TO RERENDER THE CANVAS\\r\\n\\t\\t\\t\\t\\t\\tfabric.Image.fromURL( childNode.getAttribute( \\\"xlink:href\\\" ), function( img ) {\\r\\n\\t\\t\\t\\t\\t\\t\\timages.loaded++;\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn group;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/*\\r\\n\\t\\t\\t ** GATHER MOUSE POSITION;\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tgatherPosition: function( event, type ) {\\r\\n\\t\\t\\t\\tvar ref = _this.drawing.buffer.position;\\r\\n\\t\\t\\t\\tvar ivt = fabric.util.invertTransform( _this.setup.fabric.viewportTransform );\\r\\n\\t\\t\\t\\tvar pos;\\r\\n\\r\\n\\t\\t\\t\\tif ( event.type == \\\"touchmove\\\" ) {\\r\\n\\t\\t\\t\\t\\tif ( \\\"touches\\\" in event ) {\\r\\n\\t\\t\\t\\t\\t\\tevent = event.touches[ 0 ];\\r\\n\\t\\t\\t\\t\\t} else if ( \\\"changedTouches\\\" in event ) {\\r\\n\\t\\t\\t\\t\\t\\tevent = event.changedTouches[ 0 ];\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tpos = fabric.util.transformPoint( _this.setup.fabric.getPointer( event, true ), ivt );\\r\\n\\r\\n\\t\\t\\t\\tif ( type == 1 ) {\\r\\n\\t\\t\\t\\t\\tref.x1 = pos.x;\\r\\n\\t\\t\\t\\t\\tref.y1 = pos.y;\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tref.x2 = pos.x;\\r\\n\\t\\t\\t\\tref.y2 = pos.y;\\r\\n\\t\\t\\t\\tref.xD = ( ref.x1 - ref.x2 ) < 0 ? ( ref.x1 - ref.x2 ) * -1 : ( ref.x1 - ref.x2 );\\r\\n\\t\\t\\t\\tref.yD = ( ref.y1 - ref.y2 ) < 0 ? ( ref.y1 - ref.y2 ) * -1 : ( ref.y1 - ref.y2 );\\r\\n\\r\\n\\t\\t\\t\\treturn ref;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Method to capture the current state of the chart\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tcapture: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar i1;\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( _this.deepMerge( {}, _this.config.fabric ), options || {} );\\r\\n\\t\\t\\t\\tvar groups = [];\\r\\n\\t\\t\\t\\tvar offset = {\\r\\n\\t\\t\\t\\t\\tx: 0,\\r\\n\\t\\t\\t\\t\\ty: 0,\\r\\n\\t\\t\\t\\t\\tpX: 0,\\r\\n\\t\\t\\t\\t\\tpY: 0,\\r\\n\\t\\t\\t\\t\\twidth: _this.setup.chart.divRealWidth,\\r\\n\\t\\t\\t\\t\\theight: _this.setup.chart.divRealHeight\\r\\n\\t\\t\\t\\t};\\r\\n\\t\\t\\t\\tvar images = {\\r\\n\\t\\t\\t\\t\\tloaded: 0,\\r\\n\\t\\t\\t\\t\\tincluded: 0\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tfabric.ElementsParser.prototype.resolveGradient = function( obj, property ) {\\r\\n\\r\\n\\t\\t\\t\\t\\tvar instanceFillValue = obj.get( property );\\r\\n\\t\\t\\t\\t\\tif ( !( /^url\\\\(/ ).test( instanceFillValue ) ) {\\r\\n\\t\\t\\t\\t\\t\\treturn;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tvar gradientId = instanceFillValue.slice( instanceFillValue.indexOf( \\\"#\\\" ) + 1, instanceFillValue.length - 1 );\\r\\n\\t\\t\\t\\t\\tif ( fabric.gradientDefs[ this.svgUid ][ gradientId ] ) {\\r\\n\\t\\t\\t\\t\\t\\tobj.set( property, fabric.Gradient.fromElement( fabric.gradientDefs[ this.svgUid ][ gradientId ], obj ) );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t};\\r\\n\\r\\n\\t\\t\\t\\t// BEFORE CAPTURING\\r\\n\\t\\t\\t\\t_this.handleCallback( cfg.beforeCapture, cfg );\\r\\n\\r\\n\\t\\t\\t\\t// GATHER SVGS\\r\\n\\t\\t\\t\\tvar svgs = _this.setup.chart.containerDiv.getElementsByTagName( \\\"svg\\\" );\\r\\n\\t\\t\\t\\tfor ( i1 = 0; i1 < svgs.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\tvar group = {\\r\\n\\t\\t\\t\\t\\t\\tsvg: svgs[ i1 ],\\r\\n\\t\\t\\t\\t\\t\\tparent: svgs[ i1 ].parentNode,\\r\\n\\t\\t\\t\\t\\t\\tchildren: svgs[ i1 ].getElementsByTagName( \\\"*\\\" ),\\r\\n\\t\\t\\t\\t\\t\\toffset: {\\r\\n\\t\\t\\t\\t\\t\\t\\tx: 0,\\r\\n\\t\\t\\t\\t\\t\\t\\ty: 0\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tpatterns: {},\\r\\n\\t\\t\\t\\t\\t\\tclippings: {}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// GATHER ELEMENTS\\r\\n\\t\\t\\t\\t\\tgroup = _this.gatherElements( group, cfg, images );\\r\\n\\r\\n\\t\\t\\t\\t\\t// APPEND GROUP\\r\\n\\t\\t\\t\\t\\tgroups.push( group );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// GATHER EXTERNAL LEGEND\\r\\n\\t\\t\\t\\tif ( _this.config.legend && _this.setup.chart.legend && _this.setup.chart.legend.position == \\\"outside\\\" ) {\\r\\n\\t\\t\\t\\t\\tvar group = {\\r\\n\\t\\t\\t\\t\\t\\tsvg: _this.setup.chart.legend.container.container,\\r\\n\\t\\t\\t\\t\\t\\tparent: _this.setup.chart.legend.container.container.parentNode,\\r\\n\\t\\t\\t\\t\\t\\tchildren: _this.setup.chart.legend.container.container.getElementsByTagName( \\\"*\\\" ),\\r\\n\\t\\t\\t\\t\\t\\toffset: {\\r\\n\\t\\t\\t\\t\\t\\t\\tx: 0,\\r\\n\\t\\t\\t\\t\\t\\t\\ty: 0\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tlegend: {\\r\\n\\t\\t\\t\\t\\t\\t\\ttype: [ \\\"top\\\", \\\"left\\\" ].indexOf( _this.config.legend.position ) != -1 ? \\\"unshift\\\" : \\\"push\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\tposition: _this.config.legend.position,\\r\\n\\t\\t\\t\\t\\t\\t\\twidth: _this.config.legend.width ? _this.config.legend.width : _this.setup.chart.legend.container.width,\\r\\n\\t\\t\\t\\t\\t\\t\\theight: _this.config.legend.height ? _this.config.legend.height : _this.setup.chart.legend.container.height\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tpatterns: {},\\r\\n\\t\\t\\t\\t\\t\\tclippings: {}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// ADAPT CANVAS DIMENSIONS\\r\\n\\t\\t\\t\\t\\tif ( [ \\\"left\\\", \\\"right\\\" ].indexOf( group.legend.position ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.width += group.legend.width;\\r\\n\\t\\t\\t\\t\\t\\toffset.height = group.legend.height > offset.height ? group.legend.height : offset.height;\\r\\n\\t\\t\\t\\t\\t} else if ( [ \\\"top\\\", \\\"bottom\\\" ].indexOf( group.legend.position ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.height += group.legend.height;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// GATHER ELEMENTS\\r\\n\\t\\t\\t\\t\\tgroup = _this.gatherElements( group, cfg, images );\\r\\n\\r\\n\\t\\t\\t\\t\\t// PRE/APPEND SVG\\r\\n\\t\\t\\t\\t\\tgroups[ group.legend.type ]( group );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// CLEAR IF EXIST\\r\\n\\t\\t\\t\\t_this.drawing.buffer.enabled = cfg.action == \\\"draw\\\";\\r\\n\\r\\n\\t\\t\\t\\t_this.setup.wrapper = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t_this.setup.wrapper.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-canvas\\\" );\\r\\n\\t\\t\\t\\t_this.setup.chart.containerDiv.appendChild( _this.setup.wrapper );\\r\\n\\r\\n\\t\\t\\t\\t// STOCK CHART; SELECTOR OFFSET\\r\\n\\t\\t\\t\\tif ( _this.setup.chart.type == \\\"stock\\\" ) {\\r\\n\\t\\t\\t\\t\\tvar padding = {\\r\\n\\t\\t\\t\\t\\t\\ttop: 0,\\r\\n\\t\\t\\t\\t\\t\\tright: 0,\\r\\n\\t\\t\\t\\t\\t\\tbottom: 0,\\r\\n\\t\\t\\t\\t\\t\\tleft: 0\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.leftContainer ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.width -= _this.setup.chart.leftContainer.offsetWidth;\\r\\n\\t\\t\\t\\t\\t\\tpadding.left = _this.setup.chart.leftContainer.offsetWidth + ( _this.setup.chart.panelsSettings.panelSpacing * 2 );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.rightContainer ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.width -= _this.setup.chart.rightContainer.offsetWidth;\\r\\n\\t\\t\\t\\t\\t\\tpadding.right = _this.setup.chart.rightContainer.offsetWidth + ( _this.setup.chart.panelsSettings.panelSpacing * 2 );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.periodSelector && [ \\\"top\\\", \\\"bottom\\\" ].indexOf( _this.setup.chart.periodSelector.position ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.height -= _this.setup.chart.periodSelector.offsetHeight + _this.setup.chart.panelsSettings.panelSpacing;\\r\\n\\t\\t\\t\\t\\t\\tpadding[ _this.setup.chart.periodSelector.position ] += _this.setup.chart.periodSelector.offsetHeight + _this.setup.chart.panelsSettings.panelSpacing;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.dataSetSelector && [ \\\"top\\\", \\\"bottom\\\" ].indexOf( _this.setup.chart.dataSetSelector.position ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\toffset.height -= _this.setup.chart.dataSetSelector.offsetHeight;\\r\\n\\t\\t\\t\\t\\t\\tpadding[ _this.setup.chart.dataSetSelector.position ] += _this.setup.chart.dataSetSelector.offsetHeight;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// APPLY OFFSET ON WRAPPER\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.paddingTop = _this.numberToPx( padding.top );\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.paddingRight = _this.numberToPx( padding.right );\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.paddingBottom = _this.numberToPx( padding.bottom );\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.paddingLeft = _this.numberToPx( padding.left );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// CREATE CANVAS\\r\\n\\t\\t\\t\\t_this.setup.canvas = document.createElement( \\\"canvas\\\" );\\r\\n\\t\\t\\t\\t_this.setup.wrapper.appendChild( _this.setup.canvas );\\r\\n\\t\\t\\t\\t_this.setup.fabric = new fabric.Canvas( _this.setup.canvas, _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\twidth: offset.width,\\r\\n\\t\\t\\t\\t\\theight: offset.height,\\r\\n\\t\\t\\t\\t\\tisDrawingMode: true\\r\\n\\t\\t\\t\\t}, cfg ) );\\r\\n\\r\\n\\t\\t\\t\\t// REAPPLY FOR SOME REASON\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.setup.fabric, cfg );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.setup.fabric.freeDrawingBrush, cfg.drawing );\\r\\n\\r\\n\\t\\t\\t\\t// RELIABLE VARIABLES; UPDATE DRAWING\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.drawing, cfg.drawing );\\r\\n\\t\\t\\t\\t_this.drawing.handler.change( cfg.drawing );\\r\\n\\r\\n\\t\\t\\t\\t// OBSERVE MOUSE EVENTS\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"mouse:down\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar p = _this.gatherPosition( e.e, 1 );\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.pressedTS = Number( new Date() );\\r\\n\\t\\t\\t\\t\\t_this.isPressed( e.e );\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"mouse:move\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar p = _this.gatherPosition( e.e, 2 );\\r\\n\\t\\t\\t\\t\\t_this.isPressed( e.e );\\r\\n\\r\\n\\t\\t\\t\\t\\t// CREATE INITIAL LINE / ARROW; JUST ON LEFT CLICK\\r\\n\\t\\t\\t\\t\\tif ( _this.drawing.buffer.isPressed && !_this.drawing.buffer.line ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( !_this.drawing.buffer.isSelected && _this.drawing.mode != \\\"pencil\\\" && ( p.xD > 5 || p.xD > 5 ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.buffer.hasLine = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.isDrawingMode = false;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric._onMouseUpInDrawingMode( e );\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.buffer.line = _this.drawing.handler.line( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tx1: p.x1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ty1: p.y1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tx2: p.x2,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ty2: p.y2,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tarrow: _this.drawing.mode == \\\"line\\\" ? false : _this.drawing.arrow,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"config\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// UPDATE LINE / ARROW\\r\\n\\t\\t\\t\\t\\tif ( _this.drawing.buffer.line ) {\\r\\n\\t\\t\\t\\t\\t\\tvar obj, top, left;\\r\\n\\t\\t\\t\\t\\t\\tvar l = _this.drawing.buffer.line;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tl.x2 = p.x2;\\r\\n\\t\\t\\t\\t\\t\\tl.y2 = p.y2;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < l.group.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tobj = l.group[ i1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( obj instanceof fabric.Line ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tobj.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tx2: l.x2,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ty2: l.y2\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t} else if ( obj instanceof fabric.Triangle ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tl.angle = ( _this.getAngle( l.x1, l.y1, l.x2, l.y2 ) + 90 );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( l.arrow == \\\"start\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttop = l.y1 + ( l.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft = l.x1 + ( l.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( l.arrow == \\\"middle\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttop = l.y2 + ( l.width / 2 ) - ( ( l.y2 - l.y1 ) / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft = l.x2 + ( l.width / 2 ) - ( ( l.x2 - l.x1 ) / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else { // arrow: end\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttop = l.y2 + ( l.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft = l.x2 + ( l.width / 2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tobj.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: top,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: left,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tangle: l.angle\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"mouse:up\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\t// SELECT TARGET\\r\\n\\t\\t\\t\\t\\tif ( Number( new Date() ) - _this.drawing.buffer.pressedTS < 200 ) {\\r\\n\\t\\t\\t\\t\\t\\tvar target = _this.setup.fabric.findTarget( e.e );\\r\\n\\t\\t\\t\\t\\t\\tif ( target && target.selectable ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.setActiveObject( target );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// UPDATE LINE / ARROW\\r\\n\\t\\t\\t\\t\\tif ( _this.drawing.buffer.line ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.drawing.buffer.line.group.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.buffer.line.group[ i1 ].remove();\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tdelete _this.drawing.buffer.line.action;\\r\\n\\t\\t\\t\\t\\t\\tdelete _this.drawing.buffer.line.group;\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.handler.line( _this.drawing.buffer.line );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.line = false;\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.hasLine = false;\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.isPressed = false;\\r\\n\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t// OBSERVE OBJECT SELECTION\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"object:selected\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.isSelected = true;\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.target = e.target;\\r\\n\\t\\t\\t\\t\\t_this.setup.fabric.isDrawingMode = false;\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"selection:cleared\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.onMouseDown = _this.setup.fabric.freeDrawingBrush.onMouseDown;\\r\\n\\t\\t\\t\\t\\t_this.drawing.buffer.target = false;\\r\\n\\r\\n\\t\\t\\t\\t\\t// FREEHAND WORKAROUND\\r\\n\\t\\t\\t\\t\\tif ( _this.drawing.buffer.isSelected ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric._isCurrentlyDrawing = false;\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.freeDrawingBrush.onMouseDown = function() {};\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// DELAYED DESELECTION TO PREVENT DRAWING\\r\\n\\t\\t\\t\\t\\tsetTimeout( function() {\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.buffer.isSelected = false;\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.isDrawingMode = true;\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.freeDrawingBrush.onMouseDown = _this.drawing.buffer.onMouseDown;\\r\\n\\t\\t\\t\\t\\t}, 10 );\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"path:created\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar item = e.path;\\r\\n\\t\\t\\t\\t\\tif ( Number( new Date() ) - _this.drawing.buffer.pressedTS < 200 || _this.drawing.buffer.hasLine ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.remove( item );\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\t\\t\\t\\t\\t\\treturn;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t// OBSERVE OBJECT MODIFICATIONS\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"object:added\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar item = e.target;\\r\\n\\t\\t\\t\\t\\tvar state = _this.deepMerge( item.saveState().originalState, {\\r\\n\\t\\t\\t\\t\\t\\tcfg: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcolor: _this.drawing.color,\\r\\n\\t\\t\\t\\t\\t\\t\\twidth: _this.drawing.width,\\r\\n\\t\\t\\t\\t\\t\\t\\topacity: _this.drawing.opacity,\\r\\n\\t\\t\\t\\t\\t\\t\\tfontSize: _this.drawing.fontSize\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( Number( new Date() ) - _this.drawing.buffer.pressedTS < 200 && !item.noUndo ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.remove( item );\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\t\\t\\t\\t\\t\\treturn;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tstate = JSON.stringify( state );\\r\\n\\t\\t\\t\\t\\titem.recentState = state;\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( item.selectable && !item.known && !item.noUndo ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.undos.push( {\\r\\n\\t\\t\\t\\t\\t\\t\\taction: \\\"added\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\ttarget: item,\\r\\n\\t\\t\\t\\t\\t\\t\\tstate: state\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.undos.push( {\\r\\n\\t\\t\\t\\t\\t\\t\\taction: \\\"addified\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\ttarget: item,\\r\\n\\t\\t\\t\\t\\t\\t\\tstate: state\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.redos = [];\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\titem.known = true;\\r\\n\\t\\t\\t\\t\\t_this.setup.fabric.isDrawingMode = true;\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"object:modified\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar item = e.target;\\r\\n\\t\\t\\t\\t\\tvar recentState = JSON.parse( item.recentState );\\r\\n\\t\\t\\t\\t\\tvar state = _this.deepMerge( item.saveState().originalState, {\\r\\n\\t\\t\\t\\t\\t\\tcfg: recentState.cfg\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\tstate = JSON.stringify( state );\\r\\n\\t\\t\\t\\t\\titem.recentState = state;\\r\\n\\r\\n\\t\\t\\t\\t\\t_this.drawing.undos.push( {\\r\\n\\t\\t\\t\\t\\t\\taction: \\\"modified\\\",\\r\\n\\t\\t\\t\\t\\t\\ttarget: item,\\r\\n\\t\\t\\t\\t\\t\\tstate: state\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t_this.drawing.redos = [];\\r\\n\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t_this.setup.fabric.on( \\\"text:changed\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\tvar item = e.target;\\r\\n\\t\\t\\t\\t\\tclearTimeout( item.timer );\\r\\n\\t\\t\\t\\t\\titem.timer = setTimeout( function() {\\r\\n\\t\\t\\t\\t\\t\\tvar state = JSON.stringify( item.saveState().originalState );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\titem.recentState = state;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.redos = [];\\r\\n\\t\\t\\t\\t\\t\\t_this.drawing.undos.push( {\\r\\n\\t\\t\\t\\t\\t\\t\\taction: \\\"modified\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\ttarget: item,\\r\\n\\t\\t\\t\\t\\t\\t\\tstate: state\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t}, 250 );\\r\\n\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t// DRAWING\\r\\n\\t\\t\\t\\tif ( _this.drawing.buffer.enabled ) {\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-canvas active\\\" );\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.backgroundColor = cfg.backgroundColor;\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.display = \\\"block\\\";\\r\\n\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-canvas\\\" );\\r\\n\\t\\t\\t\\t\\t_this.setup.wrapper.style.display = \\\"none\\\";\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tfor ( i1 = 0; i1 < groups.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\tvar group = groups[ i1 ];\\r\\n\\t\\t\\t\\t\\tvar isLegend = _this.gatherClassName( group.parent, _this.setup.chart.classNamePrefix + \\\"-legend-div\\\", 1 );\\r\\n\\t\\t\\t\\t\\tvar isPanel = _this.gatherClassName( group.parent, _this.setup.chart.classNamePrefix + \\\"-stock-panel-div\\\" );\\r\\n\\t\\t\\t\\t\\tvar isScrollbar = _this.gatherClassName( group.parent, _this.setup.chart.classNamePrefix + \\\"-scrollbar-chart-div\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t// STOCK CHART; SVG OFFSET;; SVG OFFSET\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.type == \\\"stock\\\" && _this.setup.chart.legendSettings.position ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// TOP / BOTTOM\\r\\n\\t\\t\\t\\t\\t\\tif ( [ \\\"top\\\", \\\"bottom\\\" ].indexOf( _this.setup.chart.legendSettings.position ) != -1 ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// POSITION; ABSOLUTE\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.parent.style.top && group.parent.style.left ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y = _this.pxToNumber( group.parent.style.top );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.x = _this.pxToNumber( group.parent.style.left );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// POSITION; RELATIVE\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.x = offset.x;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y = offset.y;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toffset.y += _this.pxToNumber( group.parent.style.height );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// LEGEND; OFFSET\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( isPanel ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toffset.pY = _this.pxToNumber( isPanel.style.marginTop );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y += offset.pY;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// SCROLLBAR; OFFSET\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( isScrollbar ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y += offset.pY;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// LEFT / RIGHT\\r\\n\\t\\t\\t\\t\\t\\t} else if ( [ \\\"left\\\", \\\"right\\\" ].indexOf( _this.setup.chart.legendSettings.position ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.y = _this.pxToNumber( group.parent.style.top ) + offset.pY;\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.x = _this.pxToNumber( group.parent.style.left ) + offset.pX;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// LEGEND; OFFSET\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( isLegend ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toffset.pY += _this.pxToNumber( isPanel.style.height ) + _this.setup.chart.panelsSettings.panelSpacing;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// SCROLLBAR; OFFSET\\r\\n\\t\\t\\t\\t\\t\\t\\t} else if ( isScrollbar ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y -= _this.setup.chart.panelsSettings.panelSpacing;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// REGULAR CHARTS; SVG OFFSET\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t// POSITION; ABSOLUTE\\r\\n\\t\\t\\t\\t\\t\\tif ( group.parent.style.position == \\\"absolute\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.absolute = true;\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.top = _this.pxToNumber( group.parent.style.top );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.right = _this.pxToNumber( group.parent.style.right, true );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.bottom = _this.pxToNumber( group.parent.style.bottom, true );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.left = _this.pxToNumber( group.parent.style.left );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.width = _this.pxToNumber( group.parent.style.width );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.height = _this.pxToNumber( group.parent.style.height );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// POSITION; RELATIVE\\r\\n\\t\\t\\t\\t\\t\\t} else if ( group.parent.style.top && group.parent.style.left ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.y = _this.pxToNumber( group.parent.style.top );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.x = _this.pxToNumber( group.parent.style.left );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// POSITION; GENERIC\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// EXTERNAL LEGEND\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.legend ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( group.legend.position == \\\"left\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toffset.x += group.legend.width;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( group.legend.position == \\\"right\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.x += offset.width - group.legend.width;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( group.legend.position == \\\"top\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toffset.y += group.legend.height;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( group.legend.position == \\\"bottom\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y += offset.height - group.legend.height; // OFFSET.Y\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// NORMAL\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.x = offset.x;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tgroup.offset.y = offset.y + offset.pY;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toffset.y += _this.pxToNumber( group.parent.style.height );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// PANEL\\r\\n\\t\\t\\t\\t\\t\\tif ( isLegend && isPanel && isPanel.style.marginTop ) {\\r\\n\\t\\t\\t\\t\\t\\t\\toffset.y += _this.pxToNumber( isPanel.style.marginTop );\\r\\n\\t\\t\\t\\t\\t\\t\\tgroup.offset.y += _this.pxToNumber( isPanel.style.marginTop );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// ADD TO CANVAS\\r\\n\\t\\t\\t\\t\\tfabric.parseSVGDocument( group.svg, ( function( group ) {\\r\\n\\t\\t\\t\\t\\t\\treturn function( objects, options ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar i1;\\r\\n\\t\\t\\t\\t\\t\\t\\tvar g = fabric.util.groupSVGElements( objects, options );\\r\\n\\t\\t\\t\\t\\t\\t\\tvar paths = [];\\r\\n\\t\\t\\t\\t\\t\\t\\tvar tmp = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tselectable: false\\r\\n\\t\\t\\t\\t\\t\\t\\t};\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// GROUP OFFSET; ABSOLUTE\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.offset.absolute ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( group.offset.bottom !== undefined ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.top = offset.height - group.offset.height - group.offset.bottom;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.top = group.offset.top;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( group.offset.right !== undefined ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.left = offset.width - group.offset.width - group.offset.right;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.left = group.offset.left;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// GROUP OFFSET; REGULAR\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttmp.top = group.offset.y;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttmp.left = group.offset.x;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// WALKTHROUGH ELEMENTS\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < g.paths.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar PID = null;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// OPACITY; TODO: DISTINGUISH OPACITY TYPES\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( g.paths[ i1 ] ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// CHECK ORIGIN; REMOVE TAINTED\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.removeImages && _this.isTainted( g.paths[ i1 ][ \\\"xlink:href\\\" ] ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcontinue;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// SET OPACITY\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( g.paths[ i1 ].fill instanceof Object ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// MISINTERPRETATION OF FABRIC\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( g.paths[ i1 ].fill.type == \\\"radial\\\" ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// PIE EXCEPTION\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( _this.setup.chart.type == \\\"pie\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmp_n = g.paths[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmp_c = tmp_n.getCenterPoint();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmp_cp = tmp_n.group.getCenterPoint();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmp_cd = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tx: tmp_n.pathOffset.x - tmp_cp.x,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ty: tmp_n.pathOffset.y - tmp_cp.y\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t};\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].fill.gradientTransform[ 4 ] = tmp_n.pathOffset.x - tmp_cd.x;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].fill.gradientTransform[ 5 ] = tmp_n.pathOffset.y - tmp_cd.y;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// OTHERS\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].fill.coords.r2 = g.paths[ i1 ].fill.coords.r1 * -1;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].fill.coords.r1 = 0;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: g.paths[ i1 ].fillOpacity\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// FILLING; TODO: DISTINGUISH OPACITY TYPES\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else if ( PID = _this.isHashbanged( g.paths[ i1 ].fill ) ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// PATTERN\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( group.patterns && group.patterns[ PID ] ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar props = group.patterns[ PID ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// LOAD IMAGE MANUALLY; TO RERENDER THE CANVAS\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfabric.Image.fromURL( props.source, ( function( props, i1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function( img ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\timages.loaded++;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar pattern = null;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar patternSourceCanvas = new fabric.StaticCanvas( undefined, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tbackgroundColor: props.fill\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpatternSourceCanvas.add( img );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpattern = new fabric.Pattern( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tsource: function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpatternSourceCanvas.setDimensions( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\twidth: props.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\theight: props.height\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn patternSourceCanvas.getElement();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\trepeat: 'repeat'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfill: pattern,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: g.paths[ i1 ].fillOpacity\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} )( props, i1 ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// CLIPPATH;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( PID = _this.isHashbanged( g.paths[ i1 ].clipPath ) ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( group.clippings && group.clippings[ PID ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclipTo: ( function( i1, PID ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function( ctx ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar cp = group.clippings[ PID ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tm = this.transformMatrix || [ 1, 0, 0, 1, 0, 0 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar dim = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: ( cp.bbox.y - tm[ 5 ] ) + cp.transform[ 5 ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: ( cp.bbox.x - tm[ 4 ] ) + cp.transform[ 4 ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\twidth: cp.bbox.width,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\theight: cp.bbox.height\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tctx.rect( dim.left, dim.top, dim.width, dim.height );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} )( i1, PID )\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// TODO; WAIT FOR TSPAN SUPPORT FROM FABRICJS SIDE\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( g.paths[ i1 ].TSPANWORKAROUND ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar parsedAttributes = fabric.parseAttributes( g.paths[ i1 ].svg, fabric.Text.ATTRIBUTE_NAMES );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar options = fabric.util.object.extend( {}, parsedAttributes );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// CREATE NEW SET\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmpBuffer = [];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfor ( var i = 0; i < g.paths[ i1 ].svg.childNodes.length; i++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar textNode = g.paths[ i1 ].svg.childNodes[ i ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar textElement = fabric.Text.fromElement( textNode, options );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextElement.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttmpBuffer.push( textElement );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// HIDE ORIGINAL ELEMENT\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tg.paths[ i1 ].set( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// REPLACE BY GROUP AND CANCEL FIRST OFFSET\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar tmpGroup = new fabric.Group( tmpBuffer, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: g.paths[ i1 ].top * -1\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( tmpGroup );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tpaths.push( g.paths[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// REPLACE WITH WHITELIST\\r\\n\\t\\t\\t\\t\\t\\t\\tg.paths = paths;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// SET PROPS\\r\\n\\t\\t\\t\\t\\t\\t\\tg.set( tmp );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ADD TO CANVAS\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( g );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ADD BALLOONS\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.svg.parentNode && group.svg.parentNode.getElementsByTagName ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar balloons = group.svg.parentNode.getElementsByClassName( _this.setup.chart.classNamePrefix + \\\"-balloon-div\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < balloons.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.balloonFunction instanceof Function ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcfg.balloonFunction.apply( _this, [ balloons[ i1 ], group ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar elm_parent = balloons[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar style_parent = fabric.parseStyleAttribute( elm_parent );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar style_text = fabric.parseStyleAttribute( elm_parent.childNodes[ 0 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar fabric_label = new fabric.Text( elm_parent.innerText || elm_parent.innerHTML, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tselectable: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: style_parent.top + group.offset.y,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: style_parent.left + group.offset.x,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfill: style_text[ \\\"color\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfontSize: style_text[ \\\"fontSize\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfontFamily: style_text[ \\\"fontFamily\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextAlign: style_text[ \\\"text-align\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( fabric_label );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( group.svg.nextSibling && group.svg.nextSibling.tagName == \\\"A\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar elm_parent = group.svg.nextSibling;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar style_parent = fabric.parseStyleAttribute( elm_parent );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar fabric_label = new fabric.Text( elm_parent.innerText || elm_parent.innerHTML, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tselectable: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: style_parent.top + group.offset.y,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: style_parent.left + group.offset.x,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfill: style_parent[ \\\"color\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfontSize: style_parent[ \\\"fontSize\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfontFamily: style_parent[ \\\"fontFamily\\\" ],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\topacity: style_parent[ \\\"opacity\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( fabric_label );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tgroups.pop();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// TRIGGER CALLBACK WITH SAFETY DELAY\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( !groups.length ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar timer = setInterval( function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( images.loaded == images.included ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclearTimeout( timer );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.handleCallback( cfg.afterCapture, cfg );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.renderAll();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.handleCallback( callback, cfg );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, AmCharts.updateRate );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// IDENTIFY ELEMENTS THROUGH CLASSNAMES\\r\\n\\t\\t\\t\\t\\t} )( group ), function( svg, obj ) {\\r\\n\\t\\t\\t\\t\\t\\tvar i1;\\r\\n\\t\\t\\t\\t\\t\\tvar className = _this.gatherAttribute( svg, \\\"class\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar visibility = _this.gatherAttribute( svg, \\\"visibility\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar clipPath = _this.gatherAttribute( svg, \\\"clip-path\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tobj.className = String( className );\\r\\n\\t\\t\\t\\t\\t\\tobj.classList = String( className ).split( \\\" \\\" );\\r\\n\\t\\t\\t\\t\\t\\tobj.clipPath = clipPath;\\r\\n\\t\\t\\t\\t\\t\\tobj.svg = svg;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// TODO; WAIT FOR TSPAN SUPPORT FROM FABRICJS SIDE\\r\\n\\t\\t\\t\\t\\t\\tif ( svg.tagName == \\\"text\\\" && svg.childNodes.length > 1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tobj.TSPANWORKAROUND = true;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// HIDE HIDDEN ELEMENTS; TODO: FIND A BETTER WAY TO HANDLE THAT\\r\\n\\t\\t\\t\\t\\t\\tif ( visibility == \\\"hidden\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tobj.opacity = 0;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// WALKTHROUGH ELEMENTS\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// TRANSPORT FILL/STROKE OPACITY\\r\\n\\t\\t\\t\\t\\t\\t\\tvar attrs = [ \\\"fill\\\", \\\"stroke\\\" ];\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < attrs.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar attr = attrs[ i1 ]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar attrVal = String( svg.getAttribute( attr ) || \\\"\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar attrOpacity = Number( svg.getAttribute( attr + \\\"-opacity\\\" ) || \\\"1\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar attrRGBA = fabric.Color.fromHex( attrVal ).getSource();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// EXCEPTION\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( obj.classList.indexOf( _this.setup.chart.classNamePrefix + \\\"-guide-fill\\\" ) != -1 && !attrVal ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattrOpacity = 0;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattrRGBA = fabric.Color.fromHex( \\\"#000000\\\" ).getSource();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( attrRGBA ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattrRGBA.pop();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattrRGBA.push( attrOpacity )\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobj[ attr ] = \\\"rgba(\\\" + attrRGBA.join() + \\\")\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tobj[ attr + _this.capitalize( \\\"opacity\\\" ) ] = attrOpacity;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// REVIVER\\r\\n\\t\\t\\t\\t\\t\\t_this.handleCallback( cfg.reviver, obj, svg );\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Returns the current canvas\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoCanvas: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t// NUFFIN\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data = _this.setup.canvas;\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Returns an image; by default PNG\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoImage: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tformat: \\\"png\\\",\\r\\n\\t\\t\\t\\t\\tquality: 1,\\r\\n\\t\\t\\t\\t\\tmultiplier: 1\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data = cfg.data;\\r\\n\\t\\t\\t\\tvar img = document.createElement( \\\"img\\\" );\\r\\n\\r\\n\\t\\t\\t\\tif ( !cfg.data ) {\\r\\n\\t\\t\\t\\t\\tif ( cfg.lossless || cfg.format == \\\"svg\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tdata = _this.toSVG( _this.deepMerge( cfg, {\\r\\n\\t\\t\\t\\t\\t\\t\\tgetBase64: true\\r\\n\\t\\t\\t\\t\\t\\t} ) );\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tdata = _this.setup.fabric.toDataURL( cfg );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\timg.setAttribute( \\\"src\\\", data );\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, img );\\r\\n\\r\\n\\t\\t\\t\\treturn img;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates a blob instance image; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoBlob: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdata: \\\"empty\\\",\\r\\n\\t\\t\\t\\t\\ttype: \\\"text/plain\\\"\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data;\\r\\n\\t\\t\\t\\tvar isBase64 = /^data:.+;base64,(.*)$/.exec( cfg.data );\\r\\n\\r\\n\\t\\t\\t\\t// GATHER BODY\\r\\n\\t\\t\\t\\tif ( isBase64 ) {\\r\\n\\t\\t\\t\\t\\tcfg.data = isBase64[ 0 ];\\r\\n\\t\\t\\t\\t\\tcfg.type = cfg.data.slice( 5, cfg.data.indexOf( \\\",\\\" ) - 7 );\\r\\n\\t\\t\\t\\t\\tcfg.data = _this.toByteArray( {\\r\\n\\t\\t\\t\\t\\t\\tdata: cfg.data.slice( cfg.data.indexOf( \\\",\\\" ) + 1, cfg.data.length )\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tif ( cfg.getByteArray ) {\\r\\n\\t\\t\\t\\t\\tdata = cfg.data;\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\tdata = new Blob( [ cfg.data ], {\\r\\n\\t\\t\\t\\t\\t\\ttype: cfg.type\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates JPG image; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoJPG: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tformat: \\\"jpeg\\\",\\r\\n\\t\\t\\t\\t\\tquality: 1,\\r\\n\\t\\t\\t\\t\\tmultiplier: 1\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tcfg.format = cfg.format.toLowerCase();\\r\\n\\t\\t\\t\\tvar data = _this.setup.fabric.toDataURL( cfg );\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates PNG image; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoPNG: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tformat: \\\"png\\\",\\r\\n\\t\\t\\t\\t\\tquality: 1,\\r\\n\\t\\t\\t\\t\\tmultiplier: 1\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data = _this.setup.fabric.toDataURL( cfg );\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates SVG image; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoSVG: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\treviver: function( string ) {\\r\\n\\t\\t\\t\\t\\t\\tvar matcher = new RegExp( /\\\\bstyle=(['\\\"])(.*?)\\\\1/ );\\r\\n\\t\\t\\t\\t\\t\\tvar match = matcher.exec( string )[ 0 ].slice( 7, -1 );\\r\\n\\t\\t\\t\\t\\t\\tvar styles = match.split( \\\";\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar replacement = [];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < styles.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( styles[ i1 ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar pair = styles[ i1 ].replace( /\\\\s/g, \\\"\\\" ).split( \\\":\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar key = pair[ 0 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar value = pair[ 1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( [ \\\"fill\\\", \\\"stroke\\\" ].indexOf( key ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = fabric.Color.fromRgba( value );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( value && value._source ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar color = \\\"#\\\" + value.toHex();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar opacity = value._source[ 3 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treplacement.push( [ key, color ].join( \\\":\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treplacement.push( [ key + \\\"-opacity\\\", opacity ].join( \\\":\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treplacement.push( styles[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( key != \\\"opactiy\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treplacement.push( styles[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\treturn string.replace( match, replacement.join( \\\";\\\" ) );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data = _this.setup.fabric.toSVG( cfg, cfg.reviver );\\r\\n\\r\\n\\t\\t\\t\\tif ( cfg.getBase64 ) {\\r\\n\\t\\t\\t\\t\\tdata = \\\"data:image/svg+xml;base64,\\\" + btoa( data );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates PDF; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoPDF: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tmultiplier: 2\\r\\n\\t\\t\\t\\t}, _this.config.pdfMake ), options || {}, true );\\r\\n\\t\\t\\t\\tcfg.images.reference = _this.toPNG( cfg );\\r\\n\\t\\t\\t\\tvar data = new pdfMake.createPdf( cfg );\\r\\n\\r\\n\\t\\t\\t\\tif ( callback ) {\\r\\n\\t\\t\\t\\t\\tdata.getDataUrl( ( function( callback ) {\\r\\n\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\tcallback.apply( _this, arguments );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} )( callback ) );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates an image; hides all elements on page to trigger native print method\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoPRINT: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar i1;\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdelay: 1,\\r\\n\\t\\t\\t\\t\\tlossless: false\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar data = _this.toImage( cfg );\\r\\n\\t\\t\\t\\tvar states = [];\\r\\n\\t\\t\\t\\tvar items = document.body.childNodes;\\r\\n\\r\\n\\t\\t\\t\\tdata.setAttribute( \\\"style\\\", \\\"width: 100%; max-height: 100%;\\\" );\\r\\n\\r\\n\\t\\t\\t\\tfor ( i1 = 0; i1 < items.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\tif ( _this.isElement( items[ i1 ] ) ) {\\r\\n\\t\\t\\t\\t\\t\\tstates[ i1 ] = items[ i1 ].style.display;\\r\\n\\t\\t\\t\\t\\t\\titems[ i1 ].style.display = \\\"none\\\";\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tdocument.body.appendChild( data );\\r\\n\\t\\t\\t\\twindow.print();\\r\\n\\r\\n\\t\\t\\t\\tsetTimeout( function() {\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < items.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.isElement( items[ i1 ] ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\titems[ i1 ].style.display = states[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tdocument.body.removeChild( data );\\r\\n\\t\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\t\\t\\t\\t}, cfg.delay );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates JSON string\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoJSON: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdateFormat: _this.config.dateFormat || \\\"dateObject\\\",\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tcfg.data = cfg.data ? cfg.data : _this.getChartData( cfg );\\r\\n\\t\\t\\t\\tvar data = JSON.stringify( cfg.data, undefined, \\\"\\\\t\\\" );\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates CSV string\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoCSV: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar row, col;\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdata: _this.getChartData( options ),\\r\\n\\t\\t\\t\\t\\tdelimiter: \\\",\\\",\\r\\n\\t\\t\\t\\t\\tquotes: true,\\r\\n\\t\\t\\t\\t\\tescape: true,\\r\\n\\t\\t\\t\\t\\twithHeader: true\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tvar data = \\\"\\\";\\r\\n\\t\\t\\t\\tvar cols = [];\\r\\n\\t\\t\\t\\tvar buffer = [];\\r\\n\\r\\n\\t\\t\\t\\tfunction enchant( value, column ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t// WRAP IN QUOTES\\r\\n\\t\\t\\t\\t\\tif ( typeof value === \\\"string\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.escape ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue = value.replace( '\\\"', '\\\"\\\"' );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.quotes ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue = [ '\\\"', value, '\\\"' ].join( \\\"\\\" );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\treturn value;\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// HEADER\\r\\n\\t\\t\\t\\tfor ( value in cfg.data[ 0 ] ) {\\r\\n\\t\\t\\t\\t\\tbuffer.push( enchant( value ) );\\r\\n\\t\\t\\t\\t\\tcols.push( value );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\tif ( cfg.withHeader ) {\\r\\n\\t\\t\\t\\t\\tdata += buffer.join( cfg.delimiter ) + \\\"\\\\n\\\";\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// BODY\\r\\n\\t\\t\\t\\tfor ( row in cfg.data ) {\\r\\n\\t\\t\\t\\t\\tbuffer = [];\\r\\n\\t\\t\\t\\t\\tif ( !isNaN( row ) ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( col in cols ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( !isNaN( col ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar column = cols[ col ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar value = cfg.data[ row ][ column ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tbuffer.push( enchant( value, column ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tdata += buffer.join( cfg.delimiter ) + \\\"\\\\n\\\";\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates excel sheet; returns base64 datastring\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoXLSX: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tname: \\\"amCharts\\\",\\r\\n\\t\\t\\t\\t\\tdateFormat: _this.config.dateFormat || \\\"dateObject\\\",\\r\\n\\t\\t\\t\\t\\twithHeader: true,\\r\\n\\t\\t\\t\\t\\tstringify: false\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tvar data = \\\"\\\";\\r\\n\\t\\t\\t\\tvar wb = {\\r\\n\\t\\t\\t\\t\\tSheetNames: [],\\r\\n\\t\\t\\t\\t\\tSheets: {}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tcfg.data = cfg.data ? cfg.data : _this.getChartData( cfg );\\r\\n\\r\\n\\t\\t\\t\\tfunction datenum( v, date1904 ) {\\r\\n\\t\\t\\t\\t\\tif ( date1904 ) v += 1462;\\r\\n\\t\\t\\t\\t\\tvar epoch = Date.parse( v );\\r\\n\\t\\t\\t\\t\\treturn ( epoch - new Date( Date.UTC( 1899, 11, 30 ) ) ) / ( 24 * 60 * 60 * 1000 );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tfunction sheet_from_array_of_arrays( data, opts ) {\\r\\n\\t\\t\\t\\t\\tvar ws = {};\\r\\n\\t\\t\\t\\t\\tvar range = {\\r\\n\\t\\t\\t\\t\\t\\ts: {\\r\\n\\t\\t\\t\\t\\t\\t\\tc: 10000000,\\r\\n\\t\\t\\t\\t\\t\\t\\tr: 10000000\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\te: {\\r\\n\\t\\t\\t\\t\\t\\t\\tc: 0,\\r\\n\\t\\t\\t\\t\\t\\t\\tr: 0\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t};\\r\\n\\t\\t\\t\\t\\tfor ( var R = 0; R != data.length; ++R ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( var C = 0; C != data[ R ].length; ++C ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( range.s.r > R ) range.s.r = R;\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( range.s.c > C ) range.s.c = C;\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( range.e.r < R ) range.e.r = R;\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( range.e.c < C ) range.e.c = C;\\r\\n\\t\\t\\t\\t\\t\\t\\tvar cell = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tv: data[ R ][ C ]\\r\\n\\t\\t\\t\\t\\t\\t\\t};\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cell.v == null ) continue;\\r\\n\\t\\t\\t\\t\\t\\t\\tvar cell_ref = XLSX.utils.encode_cell( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tc: C,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tr: R\\r\\n\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( typeof cell.v === \\\"number\\\" ) cell.t = \\\"n\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\telse if ( typeof cell.v === \\\"boolean\\\" ) cell.t = \\\"b\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\telse if ( cell.v instanceof Date ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcell.t = \\\"n\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcell.z = XLSX.SSF._table[ 14 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcell.v = datenum( cell.v );\\r\\n\\t\\t\\t\\t\\t\\t\\t} else cell.t = \\\"s\\\";\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tws[ cell_ref ] = cell;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tif ( range.s.c < 10000000 ) ws[ \\\"!ref\\\" ] = XLSX.utils.encode_range( range );\\r\\n\\t\\t\\t\\t\\treturn ws;\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\twb.SheetNames.push( cfg.name );\\r\\n\\t\\t\\t\\twb.Sheets[ cfg.name ] = sheet_from_array_of_arrays( _this.toArray( cfg ) );\\r\\n\\r\\n\\t\\t\\t\\tdata = XLSX.write( wb, {\\r\\n\\t\\t\\t\\t\\tbookType: \\\"xlsx\\\",\\r\\n\\t\\t\\t\\t\\tbookSST: true,\\r\\n\\t\\t\\t\\t\\ttype: \\\"base64\\\"\\r\\n\\t\\t\\t\\t} );\\r\\n\\r\\n\\t\\t\\t\\tdata = \\\"data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,\\\" + data;\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates an array of arrays\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoArray: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar row, col;\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdata: _this.getChartData( options ),\\r\\n\\t\\t\\t\\t\\twithHeader: false,\\r\\n\\t\\t\\t\\t\\tstringify: true\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tvar data = [];\\r\\n\\t\\t\\t\\tvar cols = [];\\r\\n\\r\\n\\t\\t\\t\\t// HEADER\\r\\n\\t\\t\\t\\tfor ( col in cfg.data[ 0 ] ) {\\r\\n\\t\\t\\t\\t\\tcols.push( col );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\tif ( cfg.withHeader ) {\\r\\n\\t\\t\\t\\t\\tdata.push( cols );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// BODY\\r\\n\\t\\t\\t\\tfor ( row in cfg.data ) {\\r\\n\\t\\t\\t\\t\\tvar buffer = [];\\r\\n\\t\\t\\t\\t\\tif ( !isNaN( row ) ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( col in cols ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( !isNaN( col ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar col = cols[ col ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar value = cfg.data[ row ][ col ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( value == null ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = \\\"\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( cfg.stringify ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = String( value );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = value;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tbuffer.push( value );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tdata.push( buffer );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates byte array with given base64 datastring; returns byte array\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\ttoByteArray: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t// NUFFIN\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar Arr = ( typeof Uint8Array !== 'undefined' ) ? Uint8Array : Array\\r\\n\\t\\t\\t\\tvar PLUS = '+'.charCodeAt( 0 )\\r\\n\\t\\t\\t\\tvar SLASH = '/'.charCodeAt( 0 )\\r\\n\\t\\t\\t\\tvar NUMBER = '0'.charCodeAt( 0 )\\r\\n\\t\\t\\t\\tvar LOWER = 'a'.charCodeAt( 0 )\\r\\n\\t\\t\\t\\tvar UPPER = 'A'.charCodeAt( 0 )\\r\\n\\t\\t\\t\\tvar data = b64ToByteArray( cfg.data );\\r\\n\\r\\n\\t\\t\\t\\tfunction decode( elt ) {\\r\\n\\t\\t\\t\\t\\tvar code = elt.charCodeAt( 0 )\\r\\n\\t\\t\\t\\t\\tif ( code === PLUS )\\r\\n\\t\\t\\t\\t\\t\\treturn 62 // '+'\\r\\n\\t\\t\\t\\t\\tif ( code === SLASH )\\r\\n\\t\\t\\t\\t\\t\\treturn 63 // '/'\\r\\n\\t\\t\\t\\t\\tif ( code < NUMBER )\\r\\n\\t\\t\\t\\t\\t\\treturn -1 //no match\\r\\n\\t\\t\\t\\t\\tif ( code < NUMBER + 10 )\\r\\n\\t\\t\\t\\t\\t\\treturn code - NUMBER + 26 + 26\\r\\n\\t\\t\\t\\t\\tif ( code < UPPER + 26 )\\r\\n\\t\\t\\t\\t\\t\\treturn code - UPPER\\r\\n\\t\\t\\t\\t\\tif ( code < LOWER + 26 )\\r\\n\\t\\t\\t\\t\\t\\treturn code - LOWER + 26\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tfunction b64ToByteArray( b64 ) {\\r\\n\\t\\t\\t\\t\\tvar i, j, l, tmp, placeHolders, arr\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( b64.length % 4 > 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tthrow new Error( 'Invalid string. Length must be a multiple of 4' )\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// THE NUMBER OF EQUAL SIGNS (PLACE HOLDERS)\\r\\n\\t\\t\\t\\t\\t// IF THERE ARE TWO PLACEHOLDERS, THAN THE TWO CHARACTERS BEFORE IT\\r\\n\\t\\t\\t\\t\\t// REPRESENT ONE BYTE\\r\\n\\t\\t\\t\\t\\t// IF THERE IS ONLY ONE, THEN THE THREE CHARACTERS BEFORE IT REPRESENT 2 BYTES\\r\\n\\t\\t\\t\\t\\t// THIS IS JUST A CHEAP HACK TO NOT DO INDEXOF TWICE\\r\\n\\t\\t\\t\\t\\tvar len = b64.length\\r\\n\\t\\t\\t\\t\\tplaceHolders = '=' === b64.charAt( len - 2 ) ? 2 : '=' === b64.charAt( len - 1 ) ? 1 : 0\\r\\n\\r\\n\\t\\t\\t\\t\\t// BASE64 IS 4/3 + UP TO TWO CHARACTERS OF THE ORIGINAL DATA\\r\\n\\t\\t\\t\\t\\tarr = new Arr( b64.length * 3 / 4 - placeHolders )\\r\\n\\r\\n\\t\\t\\t\\t\\t// IF THERE ARE PLACEHOLDERS, ONLY GET UP TO THE LAST COMPLETE 4 CHARS\\r\\n\\t\\t\\t\\t\\tl = placeHolders > 0 ? b64.length - 4 : b64.length\\r\\n\\r\\n\\t\\t\\t\\t\\tvar L = 0\\r\\n\\r\\n\\t\\t\\t\\t\\tfunction push( v ) {\\r\\n\\t\\t\\t\\t\\t\\tarr[ L++ ] = v\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tfor ( i = 0, j = 0; i < l; i += 4, j += 3 ) {\\r\\n\\t\\t\\t\\t\\t\\ttmp = ( decode( b64.charAt( i ) ) << 18 ) | ( decode( b64.charAt( i + 1 ) ) << 12 ) | ( decode( b64.charAt( i + 2 ) ) << 6 ) | decode( b64.charAt( i + 3 ) )\\r\\n\\t\\t\\t\\t\\t\\tpush( ( tmp & 0xFF0000 ) >> 16 )\\r\\n\\t\\t\\t\\t\\t\\tpush( ( tmp & 0xFF00 ) >> 8 )\\r\\n\\t\\t\\t\\t\\t\\tpush( tmp & 0xFF )\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( placeHolders === 2 ) {\\r\\n\\t\\t\\t\\t\\t\\ttmp = ( decode( b64.charAt( i ) ) << 2 ) | ( decode( b64.charAt( i + 1 ) ) >> 4 )\\r\\n\\t\\t\\t\\t\\t\\tpush( tmp & 0xFF )\\r\\n\\t\\t\\t\\t\\t} else if ( placeHolders === 1 ) {\\r\\n\\t\\t\\t\\t\\t\\ttmp = ( decode( b64.charAt( i ) ) << 10 ) | ( decode( b64.charAt( i + 1 ) ) << 4 ) | ( decode( b64.charAt( i + 2 ) ) >> 2 )\\r\\n\\t\\t\\t\\t\\t\\tpush( ( tmp >> 8 ) & 0xFF )\\r\\n\\t\\t\\t\\t\\t\\tpush( tmp & 0xFF )\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\treturn arr\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t_this.handleCallback( callback, data );\\r\\n\\r\\n\\t\\t\\t\\treturn data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Callback handler; injects additional arguments to callback\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\thandleCallback: function( callback ) {\\r\\n\\t\\t\\t\\tvar i1, data = Array();\\r\\n\\t\\t\\t\\tif ( callback && callback instanceof Function ) {\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < arguments.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( i1 > 0 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tdata.push( arguments[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tcallback.apply( _this, data );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Handles drag/drop events; loads given imagery\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\thandleDropbox: function( e ) {\\r\\n\\t\\t\\t\\tif ( _this.drawing.buffer.enabled ) {\\r\\n\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\te.stopPropagation();\\r\\n\\r\\n\\t\\t\\t\\t\\t// DRAG OVER\\r\\n\\t\\t\\t\\t\\tif ( e.type == \\\"dragover\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.wrapper.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-canvas active dropbox\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// DRAGLEAVE; DROP\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.wrapper.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-canvas active\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( e.type == \\\"drop\\\" && e.dataTransfer.files.length ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( var i1 = 0; i1 < e.dataTransfer.files.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar reader = new FileReader();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\treader.onloadend = ( function( index ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.add( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\turl: reader.result,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttop: e.layerY - ( index * 10 ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: e.layerX - ( index * 10 )\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} )( i1 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\treader.readAsDataURL( e.dataTransfer.files[ i1 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Gathers chart data according to its type\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tgetChartData: function( options ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdata: [],\\r\\n\\t\\t\\t\\t\\ttitles: {},\\r\\n\\t\\t\\t\\t\\tdateFields: [],\\r\\n\\t\\t\\t\\t\\tdataFields: [],\\r\\n\\t\\t\\t\\t\\tdataFieldsMap: {},\\r\\n\\t\\t\\t\\t\\texportTitles: _this.config.exportTitles,\\r\\n\\t\\t\\t\\t\\texportFields: _this.config.exportFields,\\r\\n\\t\\t\\t\\t\\texportSelection: _this.config.exportSelection,\\r\\n\\t\\t\\t\\t\\tcolumnNames: _this.config.columnNames\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tvar uid, i1, i2, i3;\\r\\n\\t\\t\\t\\tvar lookupFields = [ \\\"valueField\\\", \\\"openField\\\", \\\"closeField\\\", \\\"highField\\\", \\\"lowField\\\", \\\"xField\\\", \\\"yField\\\" ];\\r\\n\\r\\n\\t\\t\\t\\t// HANDLE FIELDS\\r\\n\\t\\t\\t\\tfunction addField( field, title, type ) {\\r\\n\\r\\n\\t\\t\\t\\t\\tfunction checkExistance( field, type ) {\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.dataFields.indexOf( field ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\treturn checkExistance( [ field, \\\".\\\", type ].join( \\\"\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\treturn field;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\tif ( field && cfg.exportTitles && _this.setup.chart.type != \\\"gantt\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tuid = checkExistance( field, type );\\r\\n\\t\\t\\t\\t\\t\\tcfg.dataFieldsMap[ uid ] = field;\\r\\n\\t\\t\\t\\t\\t\\tcfg.dataFields.push( uid );\\r\\n\\t\\t\\t\\t\\t\\tcfg.titles[ uid ] = title || uid;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tif ( cfg.data.length == 0 ) {\\r\\n\\t\\t\\t\\t\\t// STOCK DATA; GATHER COMPARED GRAPHS\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.type == \\\"stock\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tcfg.data = _this.setup.chart.mainDataSet.dataProvider;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// CATEGORY AXIS\\r\\n\\t\\t\\t\\t\\t\\taddField( _this.setup.chart.mainDataSet.categoryField );\\r\\n\\t\\t\\t\\t\\t\\tcfg.dateFields.push( _this.setup.chart.mainDataSet.categoryField );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// WALKTHROUGH GRAPHS\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.setup.chart.mainDataSet.fieldMappings.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar fieldMap = _this.setup.chart.mainDataSet.fieldMappings[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < _this.setup.chart.panels.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar panel = _this.setup.chart.panels[ i2 ]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfor ( i3 = 0; i3 < panel.stockGraphs.length; i3++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar graph = panel.stockGraphs[ i3 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfor ( i4 = 0; i4 < lookupFields.length; i4++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( graph[ lookupFields[ i4 ] ] == fieldMap.toField ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taddField( fieldMap.fromField, graph.title, lookupFields[ i4 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// WALKTHROUGH COMPARISON AND MERGE IT'S DATA\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.setup.chart.comparedGraphs.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar graph = _this.setup.chart.comparedGraphs[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < graph.dataSet.dataProvider.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfor ( i3 = 0; i3 < graph.dataSet.fieldMappings.length; i3++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar fieldMap = graph.dataSet.fieldMappings[ i3 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar uid = graph.dataSet.id + \\\"_\\\" + fieldMap.toField;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( i2 < cfg.data.length ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcfg.data[ i2 ][ uid ] = graph.dataSet.dataProvider[ i2 ][ fieldMap.fromField ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( !cfg.titles[ uid ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taddField( uid, graph.dataSet.title )\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// GANTT DATA; FLATTEN SEGMENTS\\r\\n\\t\\t\\t\\t\\t} else if ( _this.setup.chart.type == \\\"gantt\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t// CATEGORY AXIS\\r\\n\\t\\t\\t\\t\\t\\taddField( _this.setup.chart.categoryField );\\r\\n\\t\\t\\t\\t\\t\\tcfg.dateFields.push( _this.setup.chart.categoryField );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tvar field = _this.setup.chart.segmentsField;\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.setup.chart.dataProvider.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar dataItem = _this.setup.chart.dataProvider[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( dataItem[ field ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < dataItem[ field ].length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdataItem[ field ][ i2 ][ _this.setup.chart.categoryField ] = dataItem[ _this.setup.chart.categoryField ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcfg.data.push( dataItem[ field ][ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// GRAPHS\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.setup.chart.graphs.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar graph = _this.setup.chart.graphs[ i1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < lookupFields.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar dataField = lookupFields[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar graphField = graph[ dataField ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar title = graph.title;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\taddField( graphField, graph.title, dataField );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// PIE/FUNNEL DATA;\\r\\n\\t\\t\\t\\t\\t} else if ( [ \\\"pie\\\", \\\"funnel\\\" ].indexOf( _this.setup.chart.type ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\tcfg.data = _this.setup.chart.dataProvider;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// CATEGORY AXIS\\r\\n\\t\\t\\t\\t\\t\\taddField( _this.setup.chart.titleField );\\r\\n\\t\\t\\t\\t\\t\\tcfg.dateFields.push( _this.setup.chart.titleField );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// VALUE\\r\\n\\t\\t\\t\\t\\t\\taddField( _this.setup.chart.valueField );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// DEFAULT DATA;\\r\\n\\t\\t\\t\\t\\t} else if ( _this.setup.chart.type != \\\"map\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\tcfg.data = _this.setup.chart.dataProvider;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// CATEGORY AXIS\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.setup.chart.categoryAxis ) {\\r\\n\\t\\t\\t\\t\\t\\t\\taddField( _this.setup.chart.categoryField, _this.setup.chart.categoryAxis.title );\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( _this.setup.chart.categoryAxis.parseDates !== false ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.dateFields.push( _this.setup.chart.categoryField );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// GRAPHS\\r\\n\\t\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < _this.setup.chart.graphs.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar graph = _this.setup.chart.graphs[ i1 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < lookupFields.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar dataField = lookupFields[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar graphField = graph[ dataField ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\taddField( graphField, graph.title, dataField );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn _this.processData( cfg );\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Walkthrough data to format dates and titles\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tprocessData: function( options ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdata: [],\\r\\n\\t\\t\\t\\t\\ttitles: {},\\r\\n\\t\\t\\t\\t\\tdateFields: [],\\r\\n\\t\\t\\t\\t\\tdataFields: [],\\r\\n\\t\\t\\t\\t\\tdataFieldsMap: {},\\r\\n\\t\\t\\t\\t\\tdataDateFormat: _this.setup.chart.dataDateFormat,\\r\\n\\t\\t\\t\\t\\tdateFormat: _this.config.dateFormat || _this.setup.chart.dataDateFormat || \\\"YYYY-MM-DD\\\",\\r\\n\\t\\t\\t\\t\\texportTitles: _this.config.exportTitles,\\r\\n\\t\\t\\t\\t\\texportFields: _this.config.exportFields,\\r\\n\\t\\t\\t\\t\\texportSelection: _this.config.exportSelection,\\r\\n\\t\\t\\t\\t\\tcolumnNames: _this.config.columnNames\\r\\n\\t\\t\\t\\t}, options || {}, true );\\r\\n\\t\\t\\t\\tvar i1, i2;\\r\\n\\r\\n\\t\\t\\t\\tif ( cfg.data.length ) {\\r\\n\\t\\t\\t\\t\\t// GATHER MISSING FIELDS\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < cfg.data.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tfor ( i2 in cfg.data[ i1 ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.dataFields.indexOf( i2 ) == -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.dataFields.push( i2 );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcfg.dataFieldsMap[ i2 ] = i2;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// REMOVE FIELDS SELECTIVELY\\r\\n\\t\\t\\t\\t\\tif ( cfg.exportFields !== undefined ) {\\r\\n\\t\\t\\t\\t\\t\\tcfg.dataFields = cfg.dataFields.filter( function( n ) {\\r\\n\\t\\t\\t\\t\\t\\t\\treturn cfg.exportFields.indexOf( n ) != -1;\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// REBUILD DATA\\r\\n\\t\\t\\t\\t\\tvar buffer = [];\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < cfg.data.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tvar tmp = {};\\r\\n\\t\\t\\t\\t\\t\\tvar skip = false;\\r\\n\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < cfg.dataFields.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar uniqueField = cfg.dataFields[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\tvar dataField = cfg.dataFieldsMap[ uniqueField ];\\r\\n\\t\\t\\t\\t\\t\\t\\tvar title = ( cfg.columnNames && cfg.columnNames[ uniqueField ] ) || cfg.titles[ uniqueField ] || uniqueField;\\r\\n\\t\\t\\t\\t\\t\\t\\tvar value = cfg.data[ i1 ][ dataField ];\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( value == null ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvalue = undefined;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// TITLEFY\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.exportTitles && _this.setup.chart.type != \\\"gantt\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( title in tmp ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttitle += [ \\\"( \\\", uniqueField, \\\" )\\\" ].join( \\\"\\\" );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// PROCESS CATEGORY\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( cfg.dateFields.indexOf( dataField ) != -1 ) {\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// CONVERT DATESTRING TO DATE OBJECT\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.dataDateFormat && ( value instanceof String || typeof value == \\\"string\\\" ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = AmCharts.stringToDate( value, cfg.dataDateFormat );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// CONVERT TIMESTAMP TO DATE OBJECT\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( cfg.dateFormat && ( value instanceof Number || typeof value == \\\"number\\\" ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = new Date( value );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// CATEGORY RANGE\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.exportSelection ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( value instanceof Date ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( value < chart.startDate || value > chart.endDate ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tskip = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else if ( i1 < chart.startIndex || i1 > chart.endIndex ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tskip = true;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// CATEGORY FORMAT\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( cfg.dateFormat && cfg.dateFormat != \\\"dateObject\\\" && value instanceof Date ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue = AmCharts.formatDate( value, cfg.dateFormat );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\ttmp[ title ] = value;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( !skip ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tbuffer.push( tmp );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\tcfg.data = buffer;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn cfg.data;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Prettifies string\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tcapitalize: function( string ) {\\r\\n\\t\\t\\t\\treturn string.charAt( 0 ).toUpperCase() + string.slice( 1 ).toLowerCase();\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Generates export menu; returns UL node\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tcreateMenu: function( list, container ) {\\r\\n\\t\\t\\t\\tvar div;\\r\\n\\r\\n\\t\\t\\t\\tfunction buildList( list, container ) {\\r\\n\\t\\t\\t\\t\\tvar i1, i2, ul = document.createElement( \\\"ul\\\" );\\r\\n\\t\\t\\t\\t\\tfor ( i1 = 0; i1 < list.length; i1++ ) {\\r\\n\\t\\t\\t\\t\\t\\tvar item = typeof list[ i1 ] === \\\"string\\\" ? {\\r\\n\\t\\t\\t\\t\\t\\t\\tformat: list[ i1 ]\\r\\n\\t\\t\\t\\t\\t\\t} : list[ i1 ];\\r\\n\\t\\t\\t\\t\\t\\tvar li = document.createElement( \\\"li\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar a = document.createElement( \\\"a\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar img = document.createElement( \\\"img\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar span = document.createElement( \\\"span\\\" );\\r\\n\\t\\t\\t\\t\\t\\tvar action = String( item.action ? item.action : item.format ).toLowerCase();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\titem.format = String( item.format ).toUpperCase();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// MERGE WITH GIVEN FORMAT\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.config.formats[ item.format ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\titem = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: item.icon ? \\\"\\\" : item.format,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: item.format,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmimeType: _this.config.formats[ item.format ].mimeType,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\textension: _this.config.formats[ item.format ].extension,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcapture: _this.config.formats[ item.format ].capture,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\taction: _this.config.action,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tfileName: _this.config.fileName\\r\\n\\t\\t\\t\\t\\t\\t\\t}, item );\\r\\n\\t\\t\\t\\t\\t\\t} else if ( !item.label ) {\\r\\n\\t\\t\\t\\t\\t\\t\\titem.label = item.label ? item.label : _this.i18l( \\\"menu.label.\\\" + action );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// FILTER; TOGGLE FLAG\\r\\n\\t\\t\\t\\t\\t\\tif ( [ \\\"CSV\\\", \\\"JSON\\\", \\\"XLSX\\\" ].indexOf( item.format ) != -1 && [ \\\"map\\\", \\\"gauge\\\" ].indexOf( _this.setup.chart.type ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontinue;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// BLOB EXCEPTION\\r\\n\\t\\t\\t\\t\\t\\t} else if ( !_this.setup.hasBlob && item.format != \\\"UNDEFINED\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( item.mimeType && item.mimeType.split( \\\"/\\\" )[ 0 ] != \\\"image\\\" && item.mimeType != \\\"text/plain\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcontinue;\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// DRAWING\\r\\n\\t\\t\\t\\t\\t\\tif ( item.action == \\\"draw\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( _this.config.fabric.drawing.enabled ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.menu = item.menu ? item.menu : _this.config.fabric.drawing.menu;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.click = ( function( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.capture( item, function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.createMenu( item.menu );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} )( item );\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.menu = [];\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// DRAWING CHOICES\\r\\n\\t\\t\\t\\t\\t\\t} else if ( !item.populated && item.action && item.action.indexOf( \\\"draw.\\\" ) != -1 ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tvar type = item.action.split( \\\".\\\" )[ 1 ];\\r\\n\\t\\t\\t\\t\\t\\t\\tvar items = item[ type ] || _this.config.fabric.drawing[ type ] || [];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\titem.menu = [];\\r\\n\\t\\t\\t\\t\\t\\t\\titem.populated = true;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\tfor ( i2 = 0; i2 < items.length; i2++ ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar tmp = {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\"label\\\": items[ i2 ]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( type == \\\"shapes\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar io = items[ i2 ].indexOf( \\\"//\\\" ) == -1;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar url = ( io ? _this.config.path + \\\"shapes/\\\" : \\\"\\\" ) + items[ i2 ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.action = \\\"add\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.url = url;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.icon = url;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.ignore = io;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp[ \\\"class\\\" ] = \\\"export-drawing-shape\\\";\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( type == \\\"colors\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.style = \\\"background-color: \\\" + items[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.action = \\\"change\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.color = items[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp[ \\\"class\\\" ] = \\\"export-drawing-color\\\";\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( type == \\\"widths\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.action = \\\"change\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.width = items[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.label = document.createElement( \\\"span\\\" );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.label.style.width = _this.numberToPx( items[ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.label.style.height = _this.numberToPx( items[ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp[ \\\"class\\\" ] = \\\"export-drawing-width\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( type == \\\"opacities\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.style = \\\"opacity: \\\" + items[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.action = \\\"change\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.opacity = items[ i2 ];\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.label = ( items[ i2 ] * 100 ) + \\\"%\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp[ \\\"class\\\" ] = \\\"export-drawing-opacity\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( type == \\\"modes\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.label = _this.i18l( \\\"menu.label.draw.modes.\\\" + items[ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp.click = ( function( mode ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.mode = mode;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} )( items[ i2 ] );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttmp[ \\\"class\\\" ] = \\\"export-drawing-mode\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.menu.push( tmp );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ADD CLICK HANDLER\\r\\n\\t\\t\\t\\t\\t\\t} else if ( !item.click && !item.menu && !item.items ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t// DRAWING METHODS\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( _this.drawing.handler[ action ] instanceof Function ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.action = action;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.click = ( function( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.drawing.handler[ item.action ]( item );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} )( item );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// DRAWING\\r\\n\\t\\t\\t\\t\\t\\t\\t} else if ( _this.drawing.buffer.enabled ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.click = ( function( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( this.config.drawing.autoClose ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.drawing.handler.done();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis[ \\\"to\\\" + item.format ]( item, function( data ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( item.action == \\\"download\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.download( data, item.mimeType, [ item.fileName, item.extension ].join( \\\".\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} )( item );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// REGULAR\\r\\n\\t\\t\\t\\t\\t\\t\\t} else if ( item.format != \\\"UNDEFINED\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\titem.click = ( function( item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( item.capture || item.action == \\\"print\\\" || item.format == \\\"PRINT\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.capture( item, function() {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( this.config.drawing.autoClose ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.drawing.handler.done();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis[ \\\"to\\\" + item.format ]( item, function( data ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( item.action == \\\"download\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.download( data, item.mimeType, [ item.fileName, item.extension ].join( \\\".\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} )\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} else if ( this[ \\\"to\\\" + item.format ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis[ \\\"to\\\" + item.format ]( item, function( data ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis.download( data, item.mimeType, [ item.fileName, item.extension ].join( \\\".\\\" ) );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthrow new Error( 'Invalid format. Could not determine output type.' );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} )( item );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// HIDE EMPTY ONES\\r\\n\\t\\t\\t\\t\\t\\tif ( item.menu !== undefined && !item.menu.length ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontinue;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// ADD LINK ATTR\\r\\n\\t\\t\\t\\t\\t\\ta.setAttribute( \\\"href\\\", \\\"#\\\" );\\r\\n\\t\\t\\t\\t\\t\\ta.addEventListener( \\\"click\\\", ( function( callback, item ) {\\r\\n\\t\\t\\t\\t\\t\\t\\treturn function( e ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tvar args = [ e, item ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t// DELAYED\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( ( item.action == \\\"draw\\\" || item.format == \\\"PRINT\\\" || ( item.format != \\\"UNDEFINED\\\" && item.capture ) ) && !_this.drawing.enabled ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\titem.delay = item.delay ? item.delay : _this.config.delay;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( item.delay ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t_this.delay( item, callback );\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn;\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcallback.apply( _this, args );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t} )( item.click || function( e ) {\\r\\n\\t\\t\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\t\\t}, item ) );\\r\\n\\t\\t\\t\\t\\t\\tli.appendChild( a );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// ADD LABEL\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.isElement( item.label ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tspan.appendChild( item.label );\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\tspan.innerHTML = item.label;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// APPEND ITEMS\\r\\n\\t\\t\\t\\t\\t\\tif ( item[ \\\"class\\\" ] ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tli.className = item[ \\\"class\\\" ];\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( item.style ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tli.setAttribute( \\\"style\\\", item.style );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( item.icon ) {\\r\\n\\t\\t\\t\\t\\t\\t\\timg.setAttribute( \\\"src\\\", ( !item.ignore && item.icon.slice( 0, 10 ).indexOf( \\\"//\\\" ) == -1 ? chart.pathToImages : \\\"\\\" ) + item.icon );\\r\\n\\t\\t\\t\\t\\t\\t\\ta.appendChild( img );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( item.label ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta.appendChild( span );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\tif ( item.title ) {\\r\\n\\t\\t\\t\\t\\t\\t\\ta.setAttribute( \\\"title\\\", item.title );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// CALLBACK; REVIVER FOR MENU ITEMS\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.config.menuReviver ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tli = _this.config.menuReviver.apply( _this, [ item, li ] );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// ADD ELEMENTS FOR EASY ACCESS\\r\\n\\t\\t\\t\\t\\t\\titem.elements = {\\r\\n\\t\\t\\t\\t\\t\\t\\tli: li,\\r\\n\\t\\t\\t\\t\\t\\t\\ta: a,\\r\\n\\t\\t\\t\\t\\t\\t\\timg: img,\\r\\n\\t\\t\\t\\t\\t\\t\\tspan: span\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// ADD SUBLIST; JUST WITH ENTRIES\\r\\n\\t\\t\\t\\t\\t\\tif ( ( item.menu || item.items ) && item.action != \\\"draw\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( buildList( item.menu || item.items, li ).childNodes.length ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tul.appendChild( li );\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\tul.appendChild( li );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t// JUST ADD THOSE WITH ENTRIES\\r\\n\\t\\t\\t\\t\\tif ( ul.childNodes.length ) {\\r\\n\\t\\t\\t\\t\\t\\tcontainer.appendChild( ul );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\treturn ul;\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// DETERMINE CONTAINER\\r\\n\\t\\t\\t\\tif ( !container ) {\\r\\n\\t\\t\\t\\t\\tif ( typeof _this.config.divId == \\\"string\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.config.divId = container = document.getElementById( _this.config.divId );\\r\\n\\t\\t\\t\\t\\t} else if ( _this.isElement( _this.config.divId ) ) {\\r\\n\\t\\t\\t\\t\\t\\tcontainer = _this.config.divId;\\r\\n\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\tcontainer = _this.setup.chart.containerDiv;\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// CREATE / RESET MENU CONTAINER\\r\\n\\t\\t\\t\\tif ( _this.isElement( _this.setup.menu ) ) {\\r\\n\\t\\t\\t\\t\\t_this.setup.menu.innerHTML = \\\"\\\";\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t_this.setup.menu = document.createElement( \\\"div\\\" );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t_this.setup.menu.setAttribute( \\\"class\\\", _this.setup.chart.classNamePrefix + \\\"-export-menu \\\" + _this.setup.chart.classNamePrefix + \\\"-export-menu-\\\" + _this.config.position + \\\" amExportButton\\\" );\\r\\n\\r\\n\\t\\t\\t\\t// CALLBACK; REPLACES THE MENU WALKER\\r\\n\\t\\t\\t\\tif ( _this.config.menuWalker ) {\\r\\n\\t\\t\\t\\t\\tbuildList = _this.config.menuWalker;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\tbuildList.apply( this, [ list, _this.setup.menu ] );\\r\\n\\r\\n\\t\\t\\t\\t// JUST ADD THOSE WITH ENTRIES\\r\\n\\t\\t\\t\\tif ( _this.setup.menu.childNodes.length ) {\\r\\n\\t\\t\\t\\t\\tcontainer.appendChild( _this.setup.menu );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\treturn _this.setup.menu;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Method to trigger the callback delayed\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tdelay: function( options, callback ) {\\r\\n\\t\\t\\t\\tvar cfg = _this.deepMerge( {\\r\\n\\t\\t\\t\\t\\tdelay: 3,\\r\\n\\t\\t\\t\\t\\tprecision: 2\\r\\n\\t\\t\\t\\t}, options || {} );\\r\\n\\t\\t\\t\\tvar t1, t2, start = Number( new Date() );\\r\\n\\t\\t\\t\\tvar menu = _this.createMenu( [ {\\r\\n\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"capturing.delayed.menu.label\\\" ).replace( \\\"{{duration}}\\\", AmCharts.toFixed( cfg.delay, cfg.precision ) ),\\r\\n\\t\\t\\t\\t\\ttitle: _this.i18l( \\\"capturing.delayed.menu.title\\\" ),\\r\\n\\t\\t\\t\\t\\t\\\"class\\\": \\\"export-delayed-capturing\\\",\\r\\n\\t\\t\\t\\t\\tclick: function() {\\r\\n\\t\\t\\t\\t\\t\\tclearTimeout( t1 );\\r\\n\\t\\t\\t\\t\\t\\tclearTimeout( t2 );\\r\\n\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t} ] );\\r\\n\\t\\t\\t\\tvar label = menu.getElementsByTagName( \\\"a\\\" )[ 0 ];\\r\\n\\r\\n\\t\\t\\t\\t// MENU UPDATE\\r\\n\\t\\t\\t\\tt1 = setInterval( function() {\\r\\n\\t\\t\\t\\t\\tvar diff = cfg.delay - ( Number( new Date() ) - start ) / 1000;\\r\\n\\t\\t\\t\\t\\tif ( diff <= 0 ) {\\r\\n\\t\\t\\t\\t\\t\\tclearTimeout( t1 );\\r\\n\\t\\t\\t\\t\\t\\tif ( cfg.action != \\\"draw\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} else if ( label ) {\\r\\n\\t\\t\\t\\t\\t\\tlabel.innerHTML = _this.i18l( \\\"capturing.delayed.menu.label\\\" ).replace( \\\"{{duration}}\\\", AmCharts.toFixed( diff, 2 ) );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}, 10 );\\r\\n\\r\\n\\t\\t\\t\\t// CALLBACK\\r\\n\\t\\t\\t\\tt2 = setTimeout( function() {\\r\\n\\t\\t\\t\\t\\tcallback.apply( _this, arguments );\\r\\n\\t\\t\\t\\t}, cfg.delay * 1000 );\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Migration method to support old export setup\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tmigrateSetup: function( setup ) {\\r\\n\\t\\t\\t\\tvar cfg = {\\r\\n\\t\\t\\t\\t\\tenabled: true,\\r\\n\\t\\t\\t\\t\\tmigrated: true,\\r\\n\\t\\t\\t\\t\\tlibs: {\\r\\n\\t\\t\\t\\t\\t\\tautoLoad: true\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tmenu: []\\r\\n\\t\\t\\t\\t};\\r\\n\\r\\n\\t\\t\\t\\tfunction crawler( object ) {\\r\\n\\t\\t\\t\\t\\tvar key;\\r\\n\\t\\t\\t\\t\\tfor ( key in object ) {\\r\\n\\t\\t\\t\\t\\t\\tvar value = object[ key ];\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( key.slice( 0, 6 ) == \\\"export\\\" && value ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg.menu.push( key.slice( 6 ) );\\r\\n\\t\\t\\t\\t\\t\\t} else if ( key == \\\"userCFG\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcrawler( value );\\r\\n\\t\\t\\t\\t\\t\\t} else if ( key == \\\"menuItems\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg.menu = value;\\r\\n\\t\\t\\t\\t\\t\\t} else if ( key == \\\"libs\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg.libs = value;\\r\\n\\t\\t\\t\\t\\t\\t} else if ( typeof key == \\\"string\\\" ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tcfg[ key ] = value;\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\tcrawler( setup );\\r\\n\\r\\n\\t\\t\\t\\treturn cfg;\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/*\\r\\n\\t\\t\\t ** Add event listener\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tloadListeners: function() {\\r\\n\\t\\t\\t\\tfunction handleClone( clone ) {\\r\\n\\t\\t\\t\\t\\tif ( clone ) {\\r\\n\\t\\t\\t\\t\\t\\tclone.set( {\\r\\n\\t\\t\\t\\t\\t\\t\\ttop: clone.top + 10,\\r\\n\\t\\t\\t\\t\\t\\t\\tleft: clone.left + 10\\r\\n\\t\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t\\t\\t_this.setup.fabric.add( clone );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// OBSERVE; KEY LISTENER; DRAWING FEATURES\\r\\n\\t\\t\\t\\tif ( _this.config.keyListener && _this.config.keyListener != \\\"attached\\\" ) {\\r\\n\\t\\t\\t\\t\\t_this.config.keyListener = \\\"attached\\\";\\r\\n\\t\\t\\t\\t\\tdocument.addEventListener( \\\"keydown\\\", function( e ) {\\r\\n\\t\\t\\t\\t\\t\\tvar current = _this.drawing.buffer.target;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t// REMOVE; key: BACKSPACE / DELETE\\r\\n\\t\\t\\t\\t\\t\\tif ( ( e.keyCode == 8 || e.keyCode == 46 ) && current ) {\\r\\n\\t\\t\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.remove( current );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ESCAPE DRAWIN MODE; key: escape\\r\\n\\t\\t\\t\\t\\t\\t} else if ( e.keyCode == 27 && _this.drawing.enabled ) {\\r\\n\\t\\t\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.done();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// COPY; key: C\\r\\n\\t\\t\\t\\t\\t\\t} else if ( e.keyCode == 67 && ( e.metaKey || e.ctrlKey ) && current ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.buffer.copy = current;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// CUT; key: X\\r\\n\\t\\t\\t\\t\\t\\t} else if ( e.keyCode == 88 && ( e.metaKey || e.ctrlKey ) && current ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.drawing.buffer.copy = current;\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.fabric.remove( current );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// PASTE; key: V\\r\\n\\t\\t\\t\\t\\t\\t} else if ( e.keyCode == 86 && ( e.metaKey || e.ctrlKey ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( _this.drawing.buffer.copy ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\thandleClone( _this.drawing.buffer.copy.clone( handleClone ) )\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// UNDO / REDO; key: Z\\r\\n\\t\\t\\t\\t\\t\\t} else if ( e.keyCode == 90 && ( e.metaKey || e.ctrlKey ) ) {\\r\\n\\t\\t\\t\\t\\t\\t\\te.preventDefault();\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( e.shiftKey ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.redo();\\r\\n\\t\\t\\t\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.drawing.handler.undo();\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// OBSERVE; DRAG AND DROP LISTENER; DRAWING FEATURE\\r\\n\\t\\t\\t\\tif ( _this.config.fileListener ) {\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.addEventListener( \\\"dragover\\\", _this.handleDropbox );\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.addEventListener( \\\"dragleave\\\", _this.handleDropbox );\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.containerDiv.addEventListener( \\\"drop\\\", _this.handleDropbox );\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Initiate export menu; waits for chart container to place menu\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tinit: function() {\\r\\n\\t\\t\\t\\tclearTimeout( _this.timer );\\r\\n\\t\\t\\t\\t_this.timer = setInterval( function() {\\r\\n\\t\\t\\t\\t\\tif ( _this.setup.chart.containerDiv ) {\\r\\n\\t\\t\\t\\t\\t\\tclearTimeout( _this.timer );\\r\\n\\r\\n\\t\\t\\t\\t\\t\\tif ( _this.config.enabled ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t// CREATE REFERENCE\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.setup.chart.AmExport = _this;\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// OVERWRITE PARENT OVERFLOW\\r\\n\\t\\t\\t\\t\\t\\t\\tif ( _this.config.overflow ) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_this.setup.chart.div.style.overflow = \\\"visible\\\";\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// ATTACH EVENTS\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.loadListeners();\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t// CREATE MENU\\r\\n\\t\\t\\t\\t\\t\\t\\t_this.createMenu( _this.config.menu );\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}, AmCharts.updateRate );\\r\\n\\r\\n\\t\\t\\t},\\r\\n\\r\\n\\t\\t\\t/**\\r\\n\\t\\t\\t * Initiates export instance; merges given config; attaches event listener\\r\\n\\t\\t\\t */\\r\\n\\t\\t\\tconstruct: function() {\\r\\n\\t\\t\\t\\t// ANNOTATION; MAP \\\"DONE\\\"\\r\\n\\t\\t\\t\\t_this.drawing.handler.cancel = _this.drawing.handler.done;\\r\\n\\r\\n\\t\\t\\t\\t// CHECK BLOB CONSTRUCTOR\\r\\n\\t\\t\\t\\ttry {\\r\\n\\t\\t\\t\\t\\t_this.setup.hasBlob = !!new Blob;\\r\\n\\t\\t\\t\\t} catch ( e ) {}\\r\\n\\r\\n\\t\\t\\t\\t// WORK AROUND TO BYPASS FILESAVER CHECK TRYING TO OPEN THE BLOB URL IN SAFARI BROWSER\\r\\n\\t\\t\\t\\twindow.safari = window.safari ? window.safari : {};\\r\\n\\r\\n\\t\\t\\t\\t// OVERTAKE CHART FONTSIZE IF GIVEN\\r\\n\\t\\t\\t\\t_this.defaults.fabric.drawing.fontSize = _this.setup.chart.fontSize || 11;\\r\\n\\r\\n\\t\\t\\t\\t// MERGE SETTINGS\\r\\n\\t\\t\\t\\t_this.config.drawing = _this.deepMerge( _this.defaults.fabric.drawing, _this.config.drawing || {}, true );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.defaults.fabric, _this.config, true );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.defaults.fabric, _this.config.fabric || {}, true );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.defaults.pdfMake, _this.config, true );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.defaults.pdfMake, _this.config.pdfMake || {}, true );\\r\\n\\t\\t\\t\\t_this.deepMerge( _this.libs, _this.config.libs || {}, true );\\r\\n\\r\\n\\t\\t\\t\\t// UPDATE CONFIG\\r\\n\\t\\t\\t\\t_this.config.drawing = _this.defaults.fabric.drawing;\\r\\n\\t\\t\\t\\t_this.config.fabric = _this.defaults.fabric;\\r\\n\\t\\t\\t\\t_this.config.pdfMake = _this.defaults.pdfMake;\\r\\n\\t\\t\\t\\t_this.config = _this.deepMerge( _this.defaults, _this.config, true );\\r\\n\\r\\n\\t\\t\\t\\t// MERGE; SETUP DRAWING MENU\\r\\n\\t\\t\\t\\tif ( _this.config.fabric.drawing.enabled ) {\\r\\n\\t\\t\\t\\t\\tif ( _this.config.fabric.drawing.menu === undefined ) {\\r\\n\\t\\t\\t\\t\\t\\t_this.config.fabric.drawing.menu = [];\\r\\n\\t\\t\\t\\t\\t\\t_this.deepMerge( _this.config.fabric.drawing.menu, [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\\"class\\\": \\\"export-drawing\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\tmenu: [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.add\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.shapes\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw.shapes\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.text\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"text\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t} ]\\r\\n\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.change\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.modes\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw.modes\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.colors\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw.colors\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.widths\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw.widths\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw.opacities\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw.opacities\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, \\\"UNDO\\\", \\\"REDO\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.save.image\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: [ \\\"PNG\\\", \\\"JPG\\\", \\\"SVG\\\", \\\"PDF\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t}, \\\"PRINT\\\", \\\"CANCEL\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t} ] );\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// MERGE; SETUP MAIN MENU\\r\\n\\t\\t\\t\\tif ( _this.config.menu === undefined ) {\\r\\n\\t\\t\\t\\t\\t_this.config.menu = [];\\r\\n\\t\\t\\t\\t\\t// PARENT MENU\\r\\n\\t\\t\\t\\t\\t_this.deepMerge( _this.config, {\\r\\n\\t\\t\\t\\t\\t\\tmenu: [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\\"class\\\": \\\"export-main\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\tmenu: [ {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.save.image\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: [ \\\"PNG\\\", \\\"JPG\\\", \\\"SVG\\\", \\\"PDF\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.save.data\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: [ \\\"CSV\\\", \\\"XLSX\\\", \\\"JSON\\\" ]\\r\\n\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.draw\\\" ),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\taction: \\\"draw\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tmenu: _this.config.fabric.drawing.menu\\r\\n\\t\\t\\t\\t\\t\\t\\t}, {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: \\\"PRINT\\\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlabel: _this.i18l( \\\"menu.label.print\\\" )\\r\\n\\t\\t\\t\\t\\t\\t\\t} ]\\r\\n\\t\\t\\t\\t\\t\\t} ]\\r\\n\\t\\t\\t\\t\\t} );\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// ADD MISSING PATH\\r\\n\\t\\t\\t\\tif ( !_this.libs.path ) {\\r\\n\\t\\t\\t\\t\\t_this.libs.path = _this.config.path + \\\"libs/\\\";\\r\\n\\t\\t\\t\\t}\\r\\n\\r\\n\\t\\t\\t\\t// CHECK ACCEPTANCE\\r\\n\\t\\t\\t\\tif ( _this.isSupported() ) {\\r\\n\\t\\t\\t\\t\\t// LOAD DEPENDENCIES\\r\\n\\t\\t\\t\\t\\t_this.loadDependencies( _this.libs.resources, _this.libs.reload );\\r\\n\\t\\t\\t\\t\\t// ADD CLASSNAMES\\r\\n\\t\\t\\t\\t\\t_this.setup.chart.addClassNames = true;\\r\\n\\t\\t\\t\\t\\t// REFERENCE\\r\\n\\t\\t\\t\\t\\t_this.setup.chart[ _this.name ] = _this;\\r\\n\\t\\t\\t\\t\\t// INIT MENU; WAIT FOR CHART INSTANCE\\r\\n\\t\\t\\t\\t\\t_this.init();\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\t// USE GIVEN CONFIG\\r\\n\\t\\tif ( config ) {\\r\\n\\t\\t\\t_this.config = config;\\r\\n\\r\\n\\t\\t\\t// USE CHART EXPORT CONFIG\\r\\n\\t\\t} else if ( _this.setup.chart[ _this.name ] ) {\\r\\n\\t\\t\\t_this.config = _this.setup.chart[ _this.name ];\\r\\n\\r\\n\\t\\t\\t// MIGRATE OLD EXPORT CHART CONFIG\\r\\n\\t\\t} else if ( _this.setup.chart.amExport || _this.setup.chart.exportConfig ) {\\r\\n\\t\\t\\t_this.config = _this.migrateSetup( _this.setup.chart.amExport || _this.setup.chart.exportConfig );\\r\\n\\r\\n\\t\\t\\t// EXIT; NO CONFIG\\r\\n\\t\\t} else {\\r\\n\\t\\t\\treturn;\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\t// CONSTRUCT INSTANCE\\r\\n\\t\\t_this.construct();\\r\\n\\r\\n\\t\\t// EXPORT SCOPE\\r\\n\\t\\treturn _this.deepMerge( this, _this );\\r\\n\\t}\\r\\n} )();\\r\\n\\r\\n/**\\r\\n * Set init handler\\r\\n */\\r\\nAmCharts.addInitHandler( function( chart ) {\\r\\n\\tnew AmCharts[ \\\"export\\\" ]( chart );\\r\\n\\r\\n}, [ \\\"pie\\\", \\\"serial\\\", \\\"xy\\\", \\\"funnel\\\", \\\"radar\\\", \\\"gauge\\\", \\\"stock\\\", \\\"map\\\", \\\"gantt\\\" ] );\"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/script-loader/~/raw-loader!../Vendor/amcharts/plugins/export/export.js\n ** module id = 30\n ** module chunks = 1\n **/","require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\bower_components\\\\bootstrap-sass\\\\assets\\\\javascripts\\\\bootstrap.min.js\"))\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../bower_components/bootstrap-sass/assets/javascripts/bootstrap.min.js\n ** module id = 31\n ** module chunks = 1\n **/","module.exports = \"/*!\\n * Bootstrap v3.3.6 (http://getbootstrap.com)\\n * Copyright 2011-2015 Twitter, Inc.\\n * Licensed under the MIT license\\n */\\nif(\\\"undefined\\\"==typeof jQuery)throw new Error(\\\"Bootstrap's JavaScript requires jQuery\\\");+function(a){\\\"use strict\\\";var b=a.fn.jquery.split(\\\" \\\")[0].split(\\\".\\\");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error(\\\"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3\\\")}(jQuery),+function(a){\\\"use strict\\\";function b(){var a=document.createElement(\\\"bootstrap\\\"),b={WebkitTransition:\\\"webkitTransitionEnd\\\",MozTransition:\\\"transitionend\\\",OTransition:\\\"oTransitionEnd otransitionend\\\",transition:\\\"transitionend\\\"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(\\\"bsTransitionEnd\\\",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){\\\"use strict\\\";function b(b){return this.each(function(){var c=a(this),e=c.data(\\\"bs.alert\\\");e||c.data(\\\"bs.alert\\\",e=new d(this)),\\\"string\\\"==typeof b&&e[b].call(c)})}var c='[data-dismiss=\\\"alert\\\"]',d=function(b){a(b).on(\\\"click\\\",c,this.close)};d.VERSION=\\\"3.3.6\\\",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger(\\\"closed.bs.alert\\\").remove()}var e=a(this),f=e.attr(\\\"data-target\\\");f||(f=e.attr(\\\"href\\\"),f=f&&f.replace(/.*(?=#[^\\\\s]*$)/,\\\"\\\"));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(\\\".alert\\\")),g.trigger(b=a.Event(\\\"close.bs.alert\\\")),b.isDefaultPrevented()||(g.removeClass(\\\"in\\\"),a.support.transition&&g.hasClass(\\\"fade\\\")?g.one(\\\"bsTransitionEnd\\\",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on(\\\"click.bs.alert.data-api\\\",c,d.prototype.close)}(jQuery),+function(a){\\\"use strict\\\";function b(b){return this.each(function(){var d=a(this),e=d.data(\\\"bs.button\\\"),f=\\\"object\\\"==typeof b&&b;e||d.data(\\\"bs.button\\\",e=new c(this,f)),\\\"toggle\\\"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION=\\\"3.3.6\\\",c.DEFAULTS={loadingText:\\\"loading...\\\"},c.prototype.setState=function(b){var c=\\\"disabled\\\",d=this.$element,e=d.is(\\\"input\\\")?\\\"val\\\":\\\"html\\\",f=d.data();b+=\\\"Text\\\",null==f.resetText&&d.data(\\\"resetText\\\",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),\\\"loadingText\\\"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle=\\\"buttons\\\"]');if(b.length){var c=this.$element.find(\\\"input\\\");\\\"radio\\\"==c.prop(\\\"type\\\")?(c.prop(\\\"checked\\\")&&(a=!1),b.find(\\\".active\\\").removeClass(\\\"active\\\"),this.$element.addClass(\\\"active\\\")):\\\"checkbox\\\"==c.prop(\\\"type\\\")&&(c.prop(\\\"checked\\\")!==this.$element.hasClass(\\\"active\\\")&&(a=!1),this.$element.toggleClass(\\\"active\\\")),c.prop(\\\"checked\\\",this.$element.hasClass(\\\"active\\\")),a&&c.trigger(\\\"change\\\")}else this.$element.attr(\\\"aria-pressed\\\",!this.$element.hasClass(\\\"active\\\")),this.$element.toggleClass(\\\"active\\\")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on(\\\"click.bs.button.data-api\\\",'[data-toggle^=\\\"button\\\"]',function(c){var d=a(c.target);d.hasClass(\\\"btn\\\")||(d=d.closest(\\\".btn\\\")),b.call(d,\\\"toggle\\\"),a(c.target).is('input[type=\\\"radio\\\"]')||a(c.target).is('input[type=\\\"checkbox\\\"]')||c.preventDefault()}).on(\\\"focus.bs.button.data-api blur.bs.button.data-api\\\",'[data-toggle^=\\\"button\\\"]',function(b){a(b.target).closest(\\\".btn\\\").toggleClass(\\\"focus\\\",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){\\\"use strict\\\";function b(b){return this.each(function(){var d=a(this),e=d.data(\\\"bs.carousel\\\"),f=a.extend({},c.DEFAULTS,d.data(),\\\"object\\\"==typeof b&&b),g=\\\"string\\\"==typeof b?b:f.slide;e||d.data(\\\"bs.carousel\\\",e=new c(this,f)),\\\"number\\\"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(\\\".carousel-indicators\\\"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on(\\\"keydown.bs.carousel\\\",a.proxy(this.keydown,this)),\\\"hover\\\"==this.options.pause&&!(\\\"ontouchstart\\\"in document.documentElement)&&this.$element.on(\\\"mouseenter.bs.carousel\\\",a.proxy(this.pause,this)).on(\\\"mouseleave.bs.carousel\\\",a.proxy(this.cycle,this))};c.VERSION=\\\"3.3.6\\\",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:\\\"hover\\\",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(\\\".item\\\"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d=\\\"prev\\\"==a&&0===c||\\\"next\\\"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e=\\\"prev\\\"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(\\\".item.active\\\"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one(\\\"slid.bs.carousel\\\",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?\\\"next\\\":\\\"prev\\\",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(\\\".next, .prev\\\").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide(\\\"next\\\")},c.prototype.prev=function(){return this.sliding?void 0:this.slide(\\\"prev\\\")},c.prototype.slide=function(b,d){var e=this.$element.find(\\\".item.active\\\"),f=d||this.getItemForDirection(b,e),g=this.interval,h=\\\"next\\\"==b?\\\"left\\\":\\\"right\\\",i=this;if(f.hasClass(\\\"active\\\"))return this.sliding=!1;var j=f[0],k=a.Event(\\\"slide.bs.carousel\\\",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(\\\".active\\\").removeClass(\\\"active\\\");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass(\\\"active\\\")}var m=a.Event(\\\"slid.bs.carousel\\\",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass(\\\"slide\\\")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one(\\\"bsTransitionEnd\\\",function(){f.removeClass([b,h].join(\\\" \\\")).addClass(\\\"active\\\"),e.removeClass([\\\"active\\\",h].join(\\\" \\\")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass(\\\"active\\\"),f.addClass(\\\"active\\\"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr(\\\"data-target\\\")||(d=e.attr(\\\"href\\\"))&&d.replace(/.*(?=#[^\\\\s]+$)/,\\\"\\\"));if(f.hasClass(\\\"carousel\\\")){var g=a.extend({},f.data(),e.data()),h=e.attr(\\\"data-slide-to\\\");h&&(g.interval=!1),b.call(f,g),h&&f.data(\\\"bs.carousel\\\").to(h),c.preventDefault()}};a(document).on(\\\"click.bs.carousel.data-api\\\",\\\"[data-slide]\\\",e).on(\\\"click.bs.carousel.data-api\\\",\\\"[data-slide-to]\\\",e),a(window).on(\\\"load\\\",function(){a('[data-ride=\\\"carousel\\\"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){\\\"use strict\\\";function b(b){var c,d=b.attr(\\\"data-target\\\")||(c=b.attr(\\\"href\\\"))&&c.replace(/.*(?=#[^\\\\s]+$)/,\\\"\\\");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data(\\\"bs.collapse\\\"),f=a.extend({},d.DEFAULTS,c.data(),\\\"object\\\"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data(\\\"bs.collapse\\\",e=new d(this,f)),\\\"string\\\"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle=\\\"collapse\\\"][href=\\\"#'+b.id+'\\\"],[data-toggle=\\\"collapse\\\"][data-target=\\\"#'+b.id+'\\\"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION=\\\"3.3.6\\\",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass(\\\"width\\\");return a?\\\"width\\\":\\\"height\\\"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass(\\\"in\\\")){var b,e=this.$parent&&this.$parent.children(\\\".panel\\\").children(\\\".in, .collapsing\\\");if(!(e&&e.length&&(b=e.data(\\\"bs.collapse\\\"),b&&b.transitioning))){var f=a.Event(\\\"show.bs.collapse\\\");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,\\\"hide\\\"),b||e.data(\\\"bs.collapse\\\",null));var g=this.dimension();this.$element.removeClass(\\\"collapse\\\").addClass(\\\"collapsing\\\")[g](0).attr(\\\"aria-expanded\\\",!0),this.$trigger.removeClass(\\\"collapsed\\\").attr(\\\"aria-expanded\\\",!0),this.transitioning=1;var h=function(){this.$element.removeClass(\\\"collapsing\\\").addClass(\\\"collapse in\\\")[g](\\\"\\\"),this.transitioning=0,this.$element.trigger(\\\"shown.bs.collapse\\\")};if(!a.support.transition)return h.call(this);var i=a.camelCase([\\\"scroll\\\",g].join(\\\"-\\\"));this.$element.one(\\\"bsTransitionEnd\\\",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass(\\\"in\\\")){var b=a.Event(\\\"hide.bs.collapse\\\");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass(\\\"collapsing\\\").removeClass(\\\"collapse in\\\").attr(\\\"aria-expanded\\\",!1),this.$trigger.addClass(\\\"collapsed\\\").attr(\\\"aria-expanded\\\",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass(\\\"collapsing\\\").addClass(\\\"collapse\\\").trigger(\\\"hidden.bs.collapse\\\")};return a.support.transition?void this.$element[c](0).one(\\\"bsTransitionEnd\\\",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass(\\\"in\\\")?\\\"hide\\\":\\\"show\\\"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle=\\\"collapse\\\"][data-parent=\\\"'+this.options.parent+'\\\"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass(\\\"in\\\");a.attr(\\\"aria-expanded\\\",c),b.toggleClass(\\\"collapsed\\\",!c).attr(\\\"aria-expanded\\\",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on(\\\"click.bs.collapse.data-api\\\",'[data-toggle=\\\"collapse\\\"]',function(d){var e=a(this);e.attr(\\\"data-target\\\")||d.preventDefault();var f=b(e),g=f.data(\\\"bs.collapse\\\"),h=g?\\\"toggle\\\":e.data();c.call(f,h)})}(jQuery),+function(a){\\\"use strict\\\";function b(b){var c=b.attr(\\\"data-target\\\");c||(c=b.attr(\\\"href\\\"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\\\\s]*$)/,\\\"\\\"));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass(\\\"open\\\")&&(c&&\\\"click\\\"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event(\\\"hide.bs.dropdown\\\",f)),c.isDefaultPrevented()||(d.attr(\\\"aria-expanded\\\",\\\"false\\\"),e.removeClass(\\\"open\\\").trigger(a.Event(\\\"hidden.bs.dropdown\\\",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data(\\\"bs.dropdown\\\");d||c.data(\\\"bs.dropdown\\\",d=new g(this)),\\\"string\\\"==typeof b&&d[b].call(c)})}var e=\\\".dropdown-backdrop\\\",f='[data-toggle=\\\"dropdown\\\"]',g=function(b){a(b).on(\\\"click.bs.dropdown\\\",this.toggle)};g.VERSION=\\\"3.3.6\\\",g.prototype.toggle=function(d){var e=a(this);if(!e.is(\\\".disabled, :disabled\\\")){var f=b(e),g=f.hasClass(\\\"open\\\");if(c(),!g){\\\"ontouchstart\\\"in document.documentElement&&!f.closest(\\\".navbar-nav\\\").length&&a(document.createElement(\\\"div\\\")).addClass(\\\"dropdown-backdrop\\\").insertAfter(a(this)).on(\\\"click\\\",c);var h={relatedTarget:this};if(f.trigger(d=a.Event(\\\"show.bs.dropdown\\\",h)),d.isDefaultPrevented())return;e.trigger(\\\"focus\\\").attr(\\\"aria-expanded\\\",\\\"true\\\"),f.toggleClass(\\\"open\\\").trigger(a.Event(\\\"shown.bs.dropdown\\\",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(\\\".disabled, :disabled\\\")){var e=b(d),g=e.hasClass(\\\"open\\\");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger(\\\"focus\\\"),d.trigger(\\\"click\\\");var h=\\\" li:not(.disabled):visible a\\\",i=e.find(\\\".dropdown-menu\\\"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:\\\"\\\",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:\\\"\\\"})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:\\\"\\\",paddingRight:\\\"\\\"})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:\\\"hover focus\\\",title:\\\"\\\",delay:0,html:!1,container:!1,viewport:{selector:\\\"body\\\",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error(\\\"`selector` option must be specified when initializing \\\"+this.type+\\\" on the window.document object!\\\");for(var e=this.options.trigger.split(\\\" \\\"),f=e.length;f--;){var g=e[f];if(\\\"click\\\"==g)this.$element.on(\\\"click.\\\"+this.type,this.options.selector,a.proxy(this.toggle,this));else if(\\\"manual\\\"!=g){var h=\\\"hover\\\"==g?\\\"mouseenter\\\":\\\"focusin\\\",i=\\\"hover\\\"==g?\\\"mouseleave\\\":\\\"focusout\\\";this.$element.on(h+\\\".\\\"+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+\\\".\\\"+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:\\\"manual\\\",selector:\\\"\\\"}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&\\\"number\\\"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\\\"bs.\\\"+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\\\"bs.\\\"+this.type,c)),b instanceof a.Event&&(c.inState[\\\"focusin\\\"==b.type?\\\"focus\\\":\\\"hover\\\"]=!0),c.tip().hasClass(\\\"in\\\")||\\\"in\\\"==c.hoverState?void(c.hoverState=\\\"in\\\"):(clearTimeout(c.timeout),c.hoverState=\\\"in\\\",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){\\\"in\\\"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\\\"bs.\\\"+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\\\"bs.\\\"+this.type,c)),b instanceof a.Event&&(c.inState[\\\"focusout\\\"==b.type?\\\"focus\\\":\\\"hover\\\"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState=\\\"out\\\",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){\\\"out\\\"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event(\\\"show.bs.\\\"+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr(\\\"id\\\",g),this.$element.attr(\\\"aria-describedby\\\",g),this.options.animation&&f.addClass(\\\"fade\\\");var h=\\\"function\\\"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\\\\s?auto?\\\\s?/i,j=i.test(h);j&&(h=h.replace(i,\\\"\\\")||\\\"top\\\"),f.detach().css({top:0,left:0,display:\\\"block\\\"}).addClass(h).data(\\\"bs.\\\"+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger(\\\"inserted.bs.\\\"+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h=\\\"bottom\\\"==h&&k.bottom+m>o.bottom?\\\"top\\\":\\\"top\\\"==h&&k.top-mo.width?\\\"left\\\":\\\"left\\\"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr(\\\"data-original-title\\\")||(\\\"function\\\"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+\\\" `template` option must consist of exactly 1 top-level element!\\\");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\\\".tooltip-arrow\\\")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data(\\\"bs.\\\"+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\\\"bs.\\\"+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass(\\\"in\\\")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off(\\\".\\\"+a.type).removeData(\\\"bs.\\\"+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){\\\"use strict\\\";function b(b){return this.each(function(){var d=a(this),e=d.data(\\\"bs.popover\\\"),f=\\\"object\\\"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data(\\\"bs.popover\\\",e=new c(this,f)),\\\"string\\\"==typeof b&&e[b]())})}var c=function(a,b){this.init(\\\"popover\\\",a,b)};if(!a.fn.tooltip)throw new Error(\\\"Popover requires tooltip.js\\\");c.VERSION=\\\"3.3.6\\\",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:\\\"right\\\",trigger:\\\"click\\\",content:\\\"\\\",template:'

'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(\\\".popover-title\\\")[this.options.html?\\\"html\\\":\\\"text\\\"](b),a.find(\\\".popover-content\\\").children().detach().end()[this.options.html?\\\"string\\\"==typeof c?\\\"html\\\":\\\"append\\\":\\\"text\\\"](c),a.removeClass(\\\"fade top bottom left right in\\\"),a.find(\\\".popover-title\\\").html()||a.find(\\\".popover-title\\\").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr(\\\"data-content\\\")||(\\\"function\\\"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\\\".arrow\\\")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){\\\"use strict\\\";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||\\\"\\\")+\\\" .nav li > a\\\",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on(\\\"scroll.bs.scrollspy\\\",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data(\\\"bs.scrollspy\\\"),f=\\\"object\\\"==typeof c&&c;e||d.data(\\\"bs.scrollspy\\\",e=new b(this,f)),\\\"string\\\"==typeof c&&e[c]()})}b.VERSION=\\\"3.3.6\\\",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c=\\\"offset\\\",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c=\\\"position\\\",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data(\\\"target\\\")||b.attr(\\\"href\\\"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(\\\":visible\\\")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active\\\").removeClass(\\\"active\\\").end().find('[data-toggle=\\\"tab\\\"]').attr(\\\"aria-expanded\\\",!1),b.addClass(\\\"active\\\").find('[data-toggle=\\\"tab\\\"]').attr(\\\"aria-expanded\\\",!0),h?(b[0].offsetWidth,b.addClass(\\\"in\\\")):b.removeClass(\\\"fade\\\"),b.parent(\\\".dropdown-menu\\\").length&&b.closest(\\\"li.dropdown\\\").addClass(\\\"active\\\").end().find('[data-toggle=\\\"tab\\\"]').attr(\\\"aria-expanded\\\",!0),e&&e()}var g=d.find(\\\"> .active\\\"),h=e&&a.support.transition&&(g.length&&g.hasClass(\\\"fade\\\")||!!d.find(\\\"> .fade\\\").length);g.length&&h?g.one(\\\"bsTransitionEnd\\\",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass(\\\"in\\\")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),\\\"show\\\")};a(document).on(\\\"click.bs.tab.data-api\\\",'[data-toggle=\\\"tab\\\"]',e).on(\\\"click.bs.tab.data-api\\\",'[data-toggle=\\\"pill\\\"]',e)}(jQuery),+function(a){\\\"use strict\\\";function b(b){return this.each(function(){var d=a(this),e=d.data(\\\"bs.affix\\\"),f=\\\"object\\\"==typeof b&&b;e||d.data(\\\"bs.affix\\\",e=new c(this,f)),\\\"string\\\"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on(\\\"scroll.bs.affix.data-api\\\",a.proxy(this.checkPosition,this)).on(\\\"click.bs.affix.data-api\\\",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION=\\\"3.3.6\\\",c.RESET=\\\"affix affix-top affix-bottom\\\",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&\\\"top\\\"==this.affixed)return c>e?\\\"top\\\":!1;if(\\\"bottom\\\"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:\\\"bottom\\\":a-d>=e+g?!1:\\\"bottom\\\";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?\\\"top\\\":null!=d&&i+j>=a-d?\\\"bottom\\\":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass(\\\"affix\\\");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(\\\":visible\\\")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());\\\"object\\\"!=typeof d&&(f=e=d),\\\"function\\\"==typeof e&&(e=d.top(this.$element)),\\\"function\\\"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css(\\\"top\\\",\\\"\\\");var i=\\\"affix\\\"+(h?\\\"-\\\"+h:\\\"\\\"),j=a.Event(i+\\\".bs.affix\\\");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin=\\\"bottom\\\"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace(\\\"affix\\\",\\\"affixed\\\")+\\\".bs.affix\\\")}\\\"bottom\\\"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on(\\\"load\\\",function(){a('[data-spy=\\\"affix\\\"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);\"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/script-loader/~/raw-loader!../bower_components/bootstrap-sass/assets/javascripts/bootstrap.min.js\n ** module id = 32\n ** module chunks = 1\n **/","require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\bower_components\\\\moment\\\\min\\\\moment.min.js\"))\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../bower_components/moment/min/moment.min.js\n ** module id = 33\n ** module chunks = 1\n **/","module.exports = \"//! moment.js\\n//! version : 2.11.1\\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\\n//! license : MIT\\n//! momentjs.com\\n!function(a,b){\\\"object\\\"==typeof exports&&\\\"undefined\\\"!=typeof module?module.exports=b():\\\"function\\\"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){\\\"use strict\\\";function a(){return Uc.apply(null,arguments)}function b(a){Uc=a}function c(a){return\\\"[object Array]\\\"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||\\\"[object Date]\\\"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c0)for(c in Wc)d=Wc[c],e=b[d],m(e)||(a[d]=e);return a}function o(b){n(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),Xc===!1&&(Xc=!0,a.updateOffset(this),Xc=!1)}function p(a){return a instanceof o||null!=a&&null!=a._isAMomentObject}function q(a){return 0>a?Math.ceil(a):Math.floor(a)}function r(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=q(b)),c}function s(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&r(a[d])!==r(b[d]))&&g++;return g+f}function t(){}function u(a){return a?a.toLowerCase().replace(\\\"_\\\",\\\"-\\\"):a}function v(a){for(var b,c,d,e,f=0;f0;){if(d=w(e.slice(0,b).join(\\\"-\\\")))return d;if(c&&c.length>=b&&s(e,c,!0)>=b-1)break;b--}f++}return null}function w(a){var b=null;if(!Yc[a]&&\\\"undefined\\\"!=typeof module&&module&&module.exports)try{b=Vc._abbr,require(\\\"./locale/\\\"+a),x(b)}catch(c){}return Yc[a]}function x(a,b){var c;return a&&(c=m(b)?z(a):y(a,b),c&&(Vc=c)),Vc._abbr}function y(a,b){return null!==b?(b.abbr=a,Yc[a]=Yc[a]||new t,Yc[a].set(b),x(a),Yc[a]):(delete Yc[a],null)}function z(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Vc;if(!c(a)){if(b=w(a))return b;a=[a]}return v(a)}function A(a,b){var c=a.toLowerCase();Zc[c]=Zc[c+\\\"s\\\"]=Zc[b]=a}function B(a){return\\\"string\\\"==typeof a?Zc[a]||Zc[a.toLowerCase()]:void 0}function C(a){var b,c,d={};for(c in a)f(a,c)&&(b=B(c),b&&(d[b]=a[c]));return d}function D(a){return a instanceof Function||\\\"[object Function]\\\"===Object.prototype.toString.call(a)}function E(b,c){return function(d){return null!=d?(G(this,b,d),a.updateOffset(this,c),this):F(this,b)}}function F(a,b){return a.isValid()?a._d[\\\"get\\\"+(a._isUTC?\\\"UTC\\\":\\\"\\\")+b]():NaN}function G(a,b,c){a.isValid()&&a._d[\\\"set\\\"+(a._isUTC?\\\"UTC\\\":\\\"\\\")+b](c)}function H(a,b){var c;if(\\\"object\\\"==typeof a)for(c in a)this.set(c,a[c]);else if(a=B(a),D(this[a]))return this[a](b);return this}function I(a,b,c){var d=\\\"\\\"+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?\\\"+\\\":\\\"\\\":\\\"-\\\")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function J(a,b,c,d){var e=d;\\\"string\\\"==typeof d&&(e=function(){return this[d]()}),a&&(bd[a]=e),b&&(bd[b[0]]=function(){return I(e.apply(this,arguments),b[1],b[2])}),c&&(bd[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function K(a){return a.match(/\\\\[[\\\\s\\\\S]/)?a.replace(/^\\\\[|\\\\]$/g,\\\"\\\"):a.replace(/\\\\\\\\/g,\\\"\\\")}function L(a){var b,c,d=a.match($c);for(b=0,c=d.length;c>b;b++)bd[d[b]]?d[b]=bd[d[b]]:d[b]=K(d[b]);return function(e){var f=\\\"\\\";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function M(a,b){return a.isValid()?(b=N(b,a.localeData()),ad[b]=ad[b]||L(b),ad[b](a)):a.localeData().invalidDate()}function N(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(_c.lastIndex=0;d>=0&&_c.test(a);)a=a.replace(_c,c),_c.lastIndex=0,d-=1;return a}function O(a,b,c){td[a]=D(b)?b:function(a,d){return a&&c?c:b}}function P(a,b){return f(td,a)?td[a](b._strict,b._locale):new RegExp(Q(a))}function Q(a){return R(a.replace(\\\"\\\\\\\\\\\",\\\"\\\").replace(/\\\\\\\\(\\\\[)|\\\\\\\\(\\\\])|\\\\[([^\\\\]\\\\[]*)\\\\]|\\\\\\\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function R(a){return a.replace(/[-\\\\/\\\\\\\\^$*+?.()|[\\\\]{}]/g,\\\"\\\\\\\\$&\\\")}function S(a,b){var c,d=b;for(\\\"string\\\"==typeof a&&(a=[a]),\\\"number\\\"==typeof b&&(d=function(a,c){c[b]=r(a)}),c=0;cd;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp(\\\"^\\\"+this.months(e,\\\"\\\").replace(\\\".\\\",\\\"\\\")+\\\"$\\\",\\\"i\\\"),this._shortMonthsParse[d]=new RegExp(\\\"^\\\"+this.monthsShort(e,\\\"\\\").replace(\\\".\\\",\\\"\\\")+\\\"$\\\",\\\"i\\\")),c||this._monthsParse[d]||(f=\\\"^\\\"+this.months(e,\\\"\\\")+\\\"|^\\\"+this.monthsShort(e,\\\"\\\"),this._monthsParse[d]=new RegExp(f.replace(\\\".\\\",\\\"\\\"),\\\"i\\\")),c&&\\\"MMMM\\\"===b&&this._longMonthsParse[d].test(a))return d;if(c&&\\\"MMM\\\"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function Z(a,b){var c;return a.isValid()?\\\"string\\\"==typeof b&&(b=a.localeData().monthsParse(b),\\\"number\\\"!=typeof b)?a:(c=Math.min(a.date(),V(a.year(),b)),a._d[\\\"set\\\"+(a._isUTC?\\\"UTC\\\":\\\"\\\")+\\\"Month\\\"](b,c),a):a}function $(b){return null!=b?(Z(this,b),a.updateOffset(this,!0),this):F(this,\\\"Month\\\")}function _(){return V(this.year(),this.month())}function aa(a){return this._monthsParseExact?(f(this,\\\"_monthsRegex\\\")||ca.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex}function ba(a){return this._monthsParseExact?(f(this,\\\"_monthsRegex\\\")||ca.call(this),a?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex}function ca(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=h([2e3,b]),d.push(this.monthsShort(c,\\\"\\\")),e.push(this.months(c,\\\"\\\")),f.push(this.months(c,\\\"\\\")),f.push(this.monthsShort(c,\\\"\\\"));for(d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=R(d[b]),e[b]=R(e[b]),f[b]=R(f[b]);this._monthsRegex=new RegExp(\\\"^(\\\"+f.join(\\\"|\\\")+\\\")\\\",\\\"i\\\"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(\\\"^(\\\"+e.join(\\\"|\\\")+\\\")$\\\",\\\"i\\\"),this._monthsShortStrictRegex=new RegExp(\\\"^(\\\"+d.join(\\\"|\\\")+\\\")$\\\",\\\"i\\\")}function da(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[wd]<0||c[wd]>11?wd:c[xd]<1||c[xd]>V(c[vd],c[wd])?xd:c[yd]<0||c[yd]>24||24===c[yd]&&(0!==c[zd]||0!==c[Ad]||0!==c[Bd])?yd:c[zd]<0||c[zd]>59?zd:c[Ad]<0||c[Ad]>59?Ad:c[Bd]<0||c[Bd]>999?Bd:-1,j(a)._overflowDayOfYear&&(vd>b||b>xd)&&(b=xd),j(a)._overflowWeeks&&-1===b&&(b=Cd),j(a)._overflowWeekday&&-1===b&&(b=Dd),j(a).overflow=b),a}function ea(b){a.suppressDeprecationWarnings===!1&&\\\"undefined\\\"!=typeof console&&console.warn&&console.warn(\\\"Deprecation warning: \\\"+b)}function fa(a,b){var c=!0;return g(function(){return c&&(ea(a+\\\"\\\\nArguments: \\\"+Array.prototype.slice.call(arguments).join(\\\", \\\")+\\\"\\\\n\\\"+(new Error).stack),c=!1),b.apply(this,arguments)},b)}function ga(a,b){Jd[a]||(ea(b),Jd[a]=!0)}function ha(a){var b,c,d,e,f,g,h=a._i,i=Kd.exec(h)||Ld.exec(h);if(i){for(j(a).iso=!0,b=0,c=Nd.length;c>b;b++)if(Nd[b][1].exec(i[1])){e=Nd[b][0],d=Nd[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Od.length;c>b;b++)if(Od[b][1].exec(i[3])){f=(i[2]||\\\" \\\")+Od[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Md.exec(i[4]))return void(a._isValid=!1);g=\\\"Z\\\"}a._f=e+(f||\\\"\\\")+(g||\\\"\\\"),wa(a)}else a._isValid=!1}function ia(b){var c=Pd.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(ha(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function ja(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 100>a&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ka(a){var b=new Date(Date.UTC.apply(null,arguments));return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function la(a){return ma(a)?366:365}function ma(a){return a%4===0&&a%100!==0||a%400===0}function na(){return ma(this.year())}function oa(a,b,c){var d=7+b-c,e=(7+ka(a,0,d).getUTCDay()-b)%7;return-e+d-1}function pa(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=oa(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=la(f)+j):j>la(a)?(f=a+1,g=j-la(a)):(f=a,g=j),{year:f,dayOfYear:g}}function qa(a,b,c){var d,e,f=oa(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+ra(e,b,c)):g>ra(a.year(),b,c)?(d=g-ra(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function ra(a,b,c){var d=oa(a,b,c),e=oa(a+1,b,c);return(la(a)-d+e)/7}function sa(a,b,c){return null!=a?a:null!=b?b:c}function ta(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function ua(a){var b,c,d,e,f=[];if(!a._d){for(d=ta(a),a._w&&null==a._a[xd]&&null==a._a[wd]&&va(a),a._dayOfYear&&(e=sa(a._a[vd],d[vd]),a._dayOfYear>la(e)&&(j(a)._overflowDayOfYear=!0),c=ka(e,0,a._dayOfYear),a._a[wd]=c.getUTCMonth(),a._a[xd]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[yd]&&0===a._a[zd]&&0===a._a[Ad]&&0===a._a[Bd]&&(a._nextDay=!0,a._a[yd]=0),a._d=(a._useUTC?ka:ja).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[yd]=24)}}function va(a){var b,c,d,e,f,g,h,i;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=sa(b.GG,a._a[vd],qa(Ea(),1,4).year),d=sa(b.W,1),e=sa(b.E,1),(1>e||e>7)&&(i=!0)):(f=a._locale._week.dow,g=a._locale._week.doy,c=sa(b.gg,a._a[vd],qa(Ea(),f,g).year),d=sa(b.w,1),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f),1>d||d>ra(c,f,g)?j(a)._overflowWeeks=!0:null!=i?j(a)._overflowWeekday=!0:(h=pa(c,d,e,f,g),a._a[vd]=h.year,a._dayOfYear=h.dayOfYear)}function wa(b){if(b._f===a.ISO_8601)return void ha(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=\\\"\\\"+b._i,i=h.length,k=0;for(e=N(b._f,b._locale).match($c)||[],c=0;c0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),bd[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),U(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[yd]<=12&&b._a[yd]>0&&(j(b).bigHour=void 0),b._a[yd]=xa(b._locale,b._a[yd],b._meridiem),ua(b),da(b)}function xa(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function ya(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;ef)&&(d=f,c=b));g(a,c||b)}function za(a){if(!a._d){var b=C(a._i);a._a=e([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),ua(a)}}function Aa(a){var b=new o(da(Ba(a)));return b._nextDay&&(b.add(1,\\\"d\\\"),b._nextDay=void 0),b}function Ba(a){var b=a._i,e=a._f;return a._locale=a._locale||z(a._l),null===b||void 0===e&&\\\"\\\"===b?l({nullInput:!0}):(\\\"string\\\"==typeof b&&(a._i=b=a._locale.preparse(b)),p(b)?new o(da(b)):(c(e)?ya(a):e?wa(a):d(b)?a._d=b:Ca(a),k(a)||(a._d=null),a))}function Ca(b){var f=b._i;void 0===f?b._d=new Date(a.now()):d(f)?b._d=new Date(+f):\\\"string\\\"==typeof f?ia(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),ua(b)):\\\"object\\\"==typeof f?za(b):\\\"number\\\"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Da(a,b,c,d,e){var f={};return\\\"boolean\\\"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,Aa(f)}function Ea(a,b,c,d){return Da(a,b,c,d,!1)}function Fa(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Ea();for(d=b[0],e=1;ea&&(a=-a,c=\\\"-\\\"),c+I(~~(a/60),2)+b+I(~~a%60,2)})}function La(a,b){var c=(b||\\\"\\\").match(a)||[],d=c[c.length-1]||[],e=(d+\\\"\\\").match(Ud)||[\\\"-\\\",0,0],f=+(60*e[1])+r(e[2]);return\\\"+\\\"===e[0]?f:-f}function Ma(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(p(b)||d(b)?+b:+Ea(b))-+e,e._d.setTime(+e._d+f),a.updateOffset(e,!1),e):Ea(b).local()}function Na(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Oa(b,c){var d,e=this._offset||0;return this.isValid()?null!=b?(\\\"string\\\"==typeof b?b=La(qd,b):Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Na(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,\\\"m\\\"),e!==b&&(!c||this._changeInProgress?cb(this,Za(b-e,\\\"m\\\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Na(this):null!=b?this:NaN}function Pa(a,b){return null!=a?(\\\"string\\\"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Qa(a){return this.utcOffset(0,a)}function Ra(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Na(this),\\\"m\\\")),this}function Sa(){return this._tzm?this.utcOffset(this._tzm):\\\"string\\\"==typeof this._i&&this.utcOffset(La(pd,this._i)),this}function Ta(a){return this.isValid()?(a=a?Ea(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function Ua(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Va(){if(!m(this._isDSTShifted))return this._isDSTShifted;var a={};if(n(a,this),a=Ba(a),a._a){var b=a._isUTC?h(a._a):Ea(a._a);this._isDSTShifted=this.isValid()&&s(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Wa(){return this.isValid()?!this._isUTC:!1}function Xa(){return this.isValid()?this._isUTC:!1}function Ya(){return this.isValid()?this._isUTC&&0===this._offset:!1}function Za(a,b){var c,d,e,g=a,h=null;return Ja(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:\\\"number\\\"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=Vd.exec(a))?(c=\\\"-\\\"===h[1]?-1:1,g={y:0,d:r(h[xd])*c,h:r(h[yd])*c,m:r(h[zd])*c,s:r(h[Ad])*c,ms:r(h[Bd])*c}):(h=Wd.exec(a))?(c=\\\"-\\\"===h[1]?-1:1,g={y:$a(h[2],c),M:$a(h[3],c),d:$a(h[4],c),h:$a(h[5],c),m:$a(h[6],c),s:$a(h[7],c),w:$a(h[8],c)}):null==g?g={}:\\\"object\\\"==typeof g&&(\\\"from\\\"in g||\\\"to\\\"in g)&&(e=ab(Ea(g.from),Ea(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Ia(g),Ja(a)&&f(a,\\\"_locale\\\")&&(d._locale=a._locale),d}function $a(a,b){var c=a&&parseFloat(a.replace(\\\",\\\",\\\".\\\"));return(isNaN(c)?0:c)*b}function _a(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,\\\"M\\\").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,\\\"M\\\"),c}function ab(a,b){var c;return a.isValid()&&b.isValid()?(b=Ma(b,a),a.isBefore(b)?c=_a(a,b):(c=_a(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function bb(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(ga(b,\\\"moment().\\\"+b+\\\"(period, number) is deprecated. Please use moment().\\\"+b+\\\"(number, period).\\\"),f=c,c=d,d=f),c=\\\"string\\\"==typeof c?+c:c,e=Za(c,d),cb(this,e,a),this}}function cb(b,c,d,e){var f=c._milliseconds,g=c._days,h=c._months;b.isValid()&&(e=null==e?!0:e,f&&b._d.setTime(+b._d+f*d),g&&G(b,\\\"Date\\\",F(b,\\\"Date\\\")+g*d),h&&Z(b,F(b,\\\"Month\\\")+h*d),e&&a.updateOffset(b,g||h))}function db(a,b){var c=a||Ea(),d=Ma(c,this).startOf(\\\"day\\\"),e=this.diff(d,\\\"days\\\",!0),f=-6>e?\\\"sameElse\\\":-1>e?\\\"lastWeek\\\":0>e?\\\"lastDay\\\":1>e?\\\"sameDay\\\":2>e?\\\"nextDay\\\":7>e?\\\"nextWeek\\\":\\\"sameElse\\\",g=b&&(D(b[f])?b[f]():b[f]);return this.format(g||this.localeData().calendar(f,this,Ea(c)))}function eb(){return new o(this)}function fb(a,b){var c=p(a)?a:Ea(a);return this.isValid()&&c.isValid()?(b=B(m(b)?\\\"millisecond\\\":b),\\\"millisecond\\\"===b?+this>+c:+c<+this.clone().startOf(b)):!1}function gb(a,b){var c=p(a)?a:Ea(a);return this.isValid()&&c.isValid()?(b=B(m(b)?\\\"millisecond\\\":b),\\\"millisecond\\\"===b?+c>+this:+this.clone().endOf(b)<+c):!1}function hb(a,b,c){return this.isAfter(a,c)&&this.isBefore(b,c)}function ib(a,b){var c,d=p(a)?a:Ea(a);return this.isValid()&&d.isValid()?(b=B(b||\\\"millisecond\\\"),\\\"millisecond\\\"===b?+this===+d:(c=+d,+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))):!1}function jb(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function kb(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function lb(a,b,c){var d,e,f,g;return this.isValid()?(d=Ma(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=B(b),\\\"year\\\"===b||\\\"month\\\"===b||\\\"quarter\\\"===b?(g=mb(this,d),\\\"quarter\\\"===b?g/=3:\\\"year\\\"===b&&(g/=12)):(f=this-d,g=\\\"second\\\"===b?f/1e3:\\\"minute\\\"===b?f/6e4:\\\"hour\\\"===b?f/36e5:\\\"day\\\"===b?(f-e)/864e5:\\\"week\\\"===b?(f-e)/6048e5:f),c?g:q(g)):NaN):NaN}function mb(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,\\\"months\\\");return 0>b-f?(c=a.clone().add(e-1,\\\"months\\\"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,\\\"months\\\"),d=(b-f)/(c-f)),-(e+d)}function nb(){return this.clone().locale(\\\"en\\\").format(\\\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\\\")}function ob(){var a=this.clone().utc();return 0f&&(b=f),Ob.call(this,a,b,c,d,e))}function Ob(a,b,c,d,e){var f=pa(a,b,c,d,e),g=ka(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Pb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Qb(a){return qa(a,this._week.dow,this._week.doy).week}function Rb(){return this._week.dow}function Sb(){return this._week.doy}function Tb(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),\\\"d\\\")}function Ub(a){var b=qa(this,1,4).week;return null==a?b:this.add(7*(a-b),\\\"d\\\")}function Vb(a,b){return\\\"string\\\"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),\\\"number\\\"==typeof a?a:null):parseInt(a,10)}function Wb(a,b){return c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?\\\"format\\\":\\\"standalone\\\"][a.day()]}function Xb(a){return this._weekdaysShort[a.day()]}function Yb(a){return this._weekdaysMin[a.day()]}function Zb(a,b,c){var d,e,f;for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){if(e=Ea([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp(\\\"^\\\"+this.weekdays(e,\\\"\\\").replace(\\\".\\\",\\\".?\\\")+\\\"$\\\",\\\"i\\\"),this._shortWeekdaysParse[d]=new RegExp(\\\"^\\\"+this.weekdaysShort(e,\\\"\\\").replace(\\\".\\\",\\\".?\\\")+\\\"$\\\",\\\"i\\\"),this._minWeekdaysParse[d]=new RegExp(\\\"^\\\"+this.weekdaysMin(e,\\\"\\\").replace(\\\".\\\",\\\".?\\\")+\\\"$\\\",\\\"i\\\")),this._weekdaysParse[d]||(f=\\\"^\\\"+this.weekdays(e,\\\"\\\")+\\\"|^\\\"+this.weekdaysShort(e,\\\"\\\")+\\\"|^\\\"+this.weekdaysMin(e,\\\"\\\"),this._weekdaysParse[d]=new RegExp(f.replace(\\\".\\\",\\\"\\\"),\\\"i\\\")),c&&\\\"dddd\\\"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&\\\"ddd\\\"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&\\\"dd\\\"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function $b(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Vb(a,this.localeData()),this.add(a-b,\\\"d\\\")):b}function _b(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,\\\"d\\\")}function ac(a){return this.isValid()?null==a?this.day()||7:this.day(this.day()%7?a:a-7):null!=a?this:NaN}function bc(a){var b=Math.round((this.clone().startOf(\\\"day\\\")-this.clone().startOf(\\\"year\\\"))/864e5)+1;return null==a?b:this.add(a-b,\\\"d\\\")}function cc(){return this.hours()%12||12}function dc(a,b){J(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function ec(a,b){return b._meridiemParse}function fc(a){return\\\"p\\\"===(a+\\\"\\\").toLowerCase().charAt(0)}function gc(a,b,c){return a>11?c?\\\"pm\\\":\\\"PM\\\":c?\\\"am\\\":\\\"AM\\\"}function hc(a,b){b[Bd]=r(1e3*(\\\"0.\\\"+a))}function ic(){return this._isUTC?\\\"UTC\\\":\\\"\\\"}function jc(){return this._isUTC?\\\"Coordinated Universal Time\\\":\\\"\\\"}function kc(a){return Ea(1e3*a)}function lc(){return Ea.apply(null,arguments).parseZone()}function mc(a,b,c){var d=this._calendar[a];return D(d)?d.call(b,c):d}function nc(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function oc(){return this._invalidDate}function pc(a){return this._ordinal.replace(\\\"%d\\\",a)}function qc(a){return a}function rc(a,b,c,d){var e=this._relativeTime[c];return D(e)?e(a,b,c,d):e.replace(/%d/i,a)}function sc(a,b){var c=this._relativeTime[a>0?\\\"future\\\":\\\"past\\\"];return D(c)?c(b):c.replace(/%s/i,b)}function tc(a){var b,c;for(c in a)b=a[c],D(b)?this[c]=b:this[\\\"_\\\"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+\\\"|\\\"+/\\\\d{1,2}/.source)}function uc(a,b,c,d){var e=z(),f=h().set(d,b);return e[c](f,a)}function vc(a,b,c,d,e){if(\\\"number\\\"==typeof a&&(b=a,a=void 0),a=a||\\\"\\\",null!=b)return uc(a,b,c,e);var f,g=[];for(f=0;d>f;f++)g[f]=uc(a,f,c,e);return g}function wc(a,b){return vc(a,b,\\\"months\\\",12,\\\"month\\\")}function xc(a,b){return vc(a,b,\\\"monthsShort\\\",12,\\\"month\\\")}function yc(a,b){return vc(a,b,\\\"weekdays\\\",7,\\\"day\\\")}function zc(a,b){return vc(a,b,\\\"weekdaysShort\\\",7,\\\"day\\\")}function Ac(a,b){return vc(a,b,\\\"weekdaysMin\\\",7,\\\"day\\\")}function Bc(){var a=this._data;return this._milliseconds=se(this._milliseconds),this._days=se(this._days),this._months=se(this._months),a.milliseconds=se(a.milliseconds),a.seconds=se(a.seconds),a.minutes=se(a.minutes),a.hours=se(a.hours),a.months=se(a.months),a.years=se(a.years),this}function Cc(a,b,c,d){var e=Za(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function Dc(a,b){return Cc(this,a,b,1)}function Ec(a,b){return Cc(this,a,b,-1)}function Fc(a){return 0>a?Math.floor(a):Math.ceil(a)}function Gc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*Fc(Ic(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=q(f/1e3),i.seconds=a%60,b=q(a/60),i.minutes=b%60,c=q(b/60),i.hours=c%24,g+=q(c/24),e=q(Hc(g)),h+=e,g-=Fc(Ic(e)),d=q(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function Hc(a){return 4800*a/146097}function Ic(a){return 146097*a/4800}function Jc(a){var b,c,d=this._milliseconds;if(a=B(a),\\\"month\\\"===a||\\\"year\\\"===a)return b=this._days+d/864e5,c=this._months+Hc(b),\\\"month\\\"===a?c:c/12;switch(b=this._days+Math.round(Ic(this._months)),a){case\\\"week\\\":return b/7+d/6048e5;case\\\"day\\\":return b+d/864e5;case\\\"hour\\\":return 24*b+d/36e5;case\\\"minute\\\":return 1440*b+d/6e4;case\\\"second\\\":return 86400*b+d/1e3;case\\\"millisecond\\\":return Math.floor(864e5*b)+d;default:throw new Error(\\\"Unknown unit \\\"+a)}}function Kc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*r(this._months/12)}function Lc(a){return function(){return this.as(a)}}function Mc(a){return a=B(a),this[a+\\\"s\\\"]()}function Nc(a){return function(){return this._data[a]}}function Oc(){return q(this.days()/7)}function Pc(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function Qc(a,b,c){var d=Za(a).abs(),e=Ie(d.as(\\\"s\\\")),f=Ie(d.as(\\\"m\\\")),g=Ie(d.as(\\\"h\\\")),h=Ie(d.as(\\\"d\\\")),i=Ie(d.as(\\\"M\\\")),j=Ie(d.as(\\\"y\\\")),k=e=f&&[\\\"m\\\"]||f=g&&[\\\"h\\\"]||g=h&&[\\\"d\\\"]||h=i&&[\\\"M\\\"]||i=j&&[\\\"y\\\"]||[\\\"yy\\\",j];return k[2]=b,k[3]=+a>0,k[4]=c,Pc.apply(null,k)}function Rc(a,b){return void 0===Je[a]?!1:void 0===b?Je[a]:(Je[a]=b,!0)}function Sc(a){var b=this.localeData(),c=Qc(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function Tc(){var a,b,c,d=Ke(this._milliseconds)/1e3,e=Ke(this._days),f=Ke(this._months);a=q(d/60),b=q(a/60),d%=60,a%=60,c=q(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?\\\"-\\\":\\\"\\\")+\\\"P\\\"+(g?g+\\\"Y\\\":\\\"\\\")+(h?h+\\\"M\\\":\\\"\\\")+(i?i+\\\"D\\\":\\\"\\\")+(j||k||l?\\\"T\\\":\\\"\\\")+(j?j+\\\"H\\\":\\\"\\\")+(k?k+\\\"M\\\":\\\"\\\")+(l?l+\\\"S\\\":\\\"\\\"):\\\"P0D\\\"}var Uc,Vc,Wc=a.momentProperties=[],Xc=!1,Yc={},Zc={},$c=/(\\\\[[^\\\\[]*\\\\])|(\\\\\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,_c=/(\\\\[[^\\\\[]*\\\\])|(\\\\\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,ad={},bd={},cd=/\\\\d/,dd=/\\\\d\\\\d/,ed=/\\\\d{3}/,fd=/\\\\d{4}/,gd=/[+-]?\\\\d{6}/,hd=/\\\\d\\\\d?/,id=/\\\\d\\\\d\\\\d\\\\d?/,jd=/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d?/,kd=/\\\\d{1,3}/,ld=/\\\\d{1,4}/,md=/[+-]?\\\\d{1,6}/,nd=/\\\\d+/,od=/[+-]?\\\\d+/,pd=/Z|[+-]\\\\d\\\\d:?\\\\d\\\\d/gi,qd=/Z|[+-]\\\\d\\\\d(?::?\\\\d\\\\d)?/gi,rd=/[+-]?\\\\d+(\\\\.\\\\d{1,3})?/,sd=/[0-9]*['a-z\\\\u00A0-\\\\u05FF\\\\u0700-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]+|[\\\\u0600-\\\\u06FF\\\\/]+(\\\\s*?[\\\\u0600-\\\\u06FF]+){1,2}/i,td={},ud={},vd=0,wd=1,xd=2,yd=3,zd=4,Ad=5,Bd=6,Cd=7,Dd=8;J(\\\"M\\\",[\\\"MM\\\",2],\\\"Mo\\\",function(){return this.month()+1}),J(\\\"MMM\\\",0,0,function(a){return this.localeData().monthsShort(this,a)}),J(\\\"MMMM\\\",0,0,function(a){return this.localeData().months(this,a)}),A(\\\"month\\\",\\\"M\\\"),O(\\\"M\\\",hd),O(\\\"MM\\\",hd,dd),O(\\\"MMM\\\",function(a,b){return b.monthsShortRegex(a)}),O(\\\"MMMM\\\",function(a,b){return b.monthsRegex(a)}),S([\\\"M\\\",\\\"MM\\\"],function(a,b){b[wd]=r(a)-1}),S([\\\"MMM\\\",\\\"MMMM\\\"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[wd]=e:j(c).invalidMonth=a});var Ed=/D[oD]?(\\\\[[^\\\\[\\\\]]*\\\\]|\\\\s+)+MMMM?/,Fd=\\\"January_February_March_April_May_June_July_August_September_October_November_December\\\".split(\\\"_\\\"),Gd=\\\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\\\".split(\\\"_\\\"),Hd=sd,Id=sd,Jd={};a.suppressDeprecationWarnings=!1;var Kd=/^\\\\s*((?:[+-]\\\\d{6}|\\\\d{4})-(?:\\\\d\\\\d-\\\\d\\\\d|W\\\\d\\\\d-\\\\d|W\\\\d\\\\d|\\\\d\\\\d\\\\d|\\\\d\\\\d))(?:(T| )(\\\\d\\\\d(?::\\\\d\\\\d(?::\\\\d\\\\d(?:[.,]\\\\d+)?)?)?)([\\\\+\\\\-]\\\\d\\\\d(?::?\\\\d\\\\d)?|\\\\s*Z)?)?/,Ld=/^\\\\s*((?:[+-]\\\\d{6}|\\\\d{4})(?:\\\\d\\\\d\\\\d\\\\d|W\\\\d\\\\d\\\\d|W\\\\d\\\\d|\\\\d\\\\d\\\\d|\\\\d\\\\d))(?:(T| )(\\\\d\\\\d(?:\\\\d\\\\d(?:\\\\d\\\\d(?:[.,]\\\\d+)?)?)?)([\\\\+\\\\-]\\\\d\\\\d(?::?\\\\d\\\\d)?|\\\\s*Z)?)?/,Md=/Z|[+-]\\\\d\\\\d(?::?\\\\d\\\\d)?/,Nd=[[\\\"YYYYYY-MM-DD\\\",/[+-]\\\\d{6}-\\\\d\\\\d-\\\\d\\\\d/],[\\\"YYYY-MM-DD\\\",/\\\\d{4}-\\\\d\\\\d-\\\\d\\\\d/],[\\\"GGGG-[W]WW-E\\\",/\\\\d{4}-W\\\\d\\\\d-\\\\d/],[\\\"GGGG-[W]WW\\\",/\\\\d{4}-W\\\\d\\\\d/,!1],[\\\"YYYY-DDD\\\",/\\\\d{4}-\\\\d{3}/],[\\\"YYYY-MM\\\",/\\\\d{4}-\\\\d\\\\d/,!1],[\\\"YYYYYYMMDD\\\",/[+-]\\\\d{10}/],[\\\"YYYYMMDD\\\",/\\\\d{8}/],[\\\"GGGG[W]WWE\\\",/\\\\d{4}W\\\\d{3}/],[\\\"GGGG[W]WW\\\",/\\\\d{4}W\\\\d{2}/,!1],[\\\"YYYYDDD\\\",/\\\\d{7}/]],Od=[[\\\"HH:mm:ss.SSSS\\\",/\\\\d\\\\d:\\\\d\\\\d:\\\\d\\\\d\\\\.\\\\d+/],[\\\"HH:mm:ss,SSSS\\\",/\\\\d\\\\d:\\\\d\\\\d:\\\\d\\\\d,\\\\d+/],[\\\"HH:mm:ss\\\",/\\\\d\\\\d:\\\\d\\\\d:\\\\d\\\\d/],[\\\"HH:mm\\\",/\\\\d\\\\d:\\\\d\\\\d/],[\\\"HHmmss.SSSS\\\",/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d\\\\.\\\\d+/],[\\\"HHmmss,SSSS\\\",/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d,\\\\d+/],[\\\"HHmmss\\\",/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d/],[\\\"HHmm\\\",/\\\\d\\\\d\\\\d\\\\d/],[\\\"HH\\\",/\\\\d\\\\d/]],Pd=/^\\\\/?Date\\\\((\\\\-?\\\\d+)/i;a.createFromInputFallback=fa(\\\"moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.\\\",function(a){a._d=new Date(a._i+(a._useUTC?\\\" UTC\\\":\\\"\\\"))}),J(\\\"Y\\\",0,0,function(){var a=this.year();return 9999>=a?\\\"\\\"+a:\\\"+\\\"+a}),J(0,[\\\"YY\\\",2],0,function(){return this.year()%100}),J(0,[\\\"YYYY\\\",4],0,\\\"year\\\"),J(0,[\\\"YYYYY\\\",5],0,\\\"year\\\"),J(0,[\\\"YYYYYY\\\",6,!0],0,\\\"year\\\"),A(\\\"year\\\",\\\"y\\\"),O(\\\"Y\\\",od),O(\\\"YY\\\",hd,dd),O(\\\"YYYY\\\",ld,fd),O(\\\"YYYYY\\\",md,gd),O(\\\"YYYYYY\\\",md,gd),S([\\\"YYYYY\\\",\\\"YYYYYY\\\"],vd),S(\\\"YYYY\\\",function(b,c){c[vd]=2===b.length?a.parseTwoDigitYear(b):r(b)}),S(\\\"YY\\\",function(b,c){c[vd]=a.parseTwoDigitYear(b)}),S(\\\"Y\\\",function(a,b){b[vd]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return r(a)+(r(a)>68?1900:2e3)};var Qd=E(\\\"FullYear\\\",!1);a.ISO_8601=function(){};var Rd=fa(\\\"moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548\\\",function(){var a=Ea.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:l()}),Sd=fa(\\\"moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548\\\",function(){var a=Ea.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:l()}),Td=function(){return Date.now?Date.now():+new Date};Ka(\\\"Z\\\",\\\":\\\"),Ka(\\\"ZZ\\\",\\\"\\\"),O(\\\"Z\\\",qd),O(\\\"ZZ\\\",qd),S([\\\"Z\\\",\\\"ZZ\\\"],function(a,b,c){c._useUTC=!0,c._tzm=La(qd,a)});var Ud=/([\\\\+\\\\-]|\\\\d\\\\d)/gi;a.updateOffset=function(){};var Vd=/(\\\\-)?(?:(\\\\d*)[. ])?(\\\\d+)\\\\:(\\\\d+)(?:\\\\:(\\\\d+)\\\\.?(\\\\d{3})?)?/,Wd=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;\\nZa.fn=Ia.prototype;var Xd=bb(1,\\\"add\\\"),Yd=bb(-1,\\\"subtract\\\");a.defaultFormat=\\\"YYYY-MM-DDTHH:mm:ssZ\\\";var Zd=fa(\\\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\\\",function(a){return void 0===a?this.localeData():this.locale(a)});J(0,[\\\"gg\\\",2],0,function(){return this.weekYear()%100}),J(0,[\\\"GG\\\",2],0,function(){return this.isoWeekYear()%100}),Ib(\\\"gggg\\\",\\\"weekYear\\\"),Ib(\\\"ggggg\\\",\\\"weekYear\\\"),Ib(\\\"GGGG\\\",\\\"isoWeekYear\\\"),Ib(\\\"GGGGG\\\",\\\"isoWeekYear\\\"),A(\\\"weekYear\\\",\\\"gg\\\"),A(\\\"isoWeekYear\\\",\\\"GG\\\"),O(\\\"G\\\",od),O(\\\"g\\\",od),O(\\\"GG\\\",hd,dd),O(\\\"gg\\\",hd,dd),O(\\\"GGGG\\\",ld,fd),O(\\\"gggg\\\",ld,fd),O(\\\"GGGGG\\\",md,gd),O(\\\"ggggg\\\",md,gd),T([\\\"gggg\\\",\\\"ggggg\\\",\\\"GGGG\\\",\\\"GGGGG\\\"],function(a,b,c,d){b[d.substr(0,2)]=r(a)}),T([\\\"gg\\\",\\\"GG\\\"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),J(\\\"Q\\\",0,\\\"Qo\\\",\\\"quarter\\\"),A(\\\"quarter\\\",\\\"Q\\\"),O(\\\"Q\\\",cd),S(\\\"Q\\\",function(a,b){b[wd]=3*(r(a)-1)}),J(\\\"w\\\",[\\\"ww\\\",2],\\\"wo\\\",\\\"week\\\"),J(\\\"W\\\",[\\\"WW\\\",2],\\\"Wo\\\",\\\"isoWeek\\\"),A(\\\"week\\\",\\\"w\\\"),A(\\\"isoWeek\\\",\\\"W\\\"),O(\\\"w\\\",hd),O(\\\"ww\\\",hd,dd),O(\\\"W\\\",hd),O(\\\"WW\\\",hd,dd),T([\\\"w\\\",\\\"ww\\\",\\\"W\\\",\\\"WW\\\"],function(a,b,c,d){b[d.substr(0,1)]=r(a)});var $d={dow:0,doy:6};J(\\\"D\\\",[\\\"DD\\\",2],\\\"Do\\\",\\\"date\\\"),A(\\\"date\\\",\\\"D\\\"),O(\\\"D\\\",hd),O(\\\"DD\\\",hd,dd),O(\\\"Do\\\",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),S([\\\"D\\\",\\\"DD\\\"],xd),S(\\\"Do\\\",function(a,b){b[xd]=r(a.match(hd)[0],10)});var _d=E(\\\"Date\\\",!0);J(\\\"d\\\",0,\\\"do\\\",\\\"day\\\"),J(\\\"dd\\\",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),J(\\\"ddd\\\",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),J(\\\"dddd\\\",0,0,function(a){return this.localeData().weekdays(this,a)}),J(\\\"e\\\",0,0,\\\"weekday\\\"),J(\\\"E\\\",0,0,\\\"isoWeekday\\\"),A(\\\"day\\\",\\\"d\\\"),A(\\\"weekday\\\",\\\"e\\\"),A(\\\"isoWeekday\\\",\\\"E\\\"),O(\\\"d\\\",hd),O(\\\"e\\\",hd),O(\\\"E\\\",hd),O(\\\"dd\\\",sd),O(\\\"ddd\\\",sd),O(\\\"dddd\\\",sd),T([\\\"dd\\\",\\\"ddd\\\",\\\"dddd\\\"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:j(c).invalidWeekday=a}),T([\\\"d\\\",\\\"e\\\",\\\"E\\\"],function(a,b,c,d){b[d]=r(a)});var ae=\\\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\\\".split(\\\"_\\\"),be=\\\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\\\".split(\\\"_\\\"),ce=\\\"Su_Mo_Tu_We_Th_Fr_Sa\\\".split(\\\"_\\\");J(\\\"DDD\\\",[\\\"DDDD\\\",3],\\\"DDDo\\\",\\\"dayOfYear\\\"),A(\\\"dayOfYear\\\",\\\"DDD\\\"),O(\\\"DDD\\\",kd),O(\\\"DDDD\\\",ed),S([\\\"DDD\\\",\\\"DDDD\\\"],function(a,b,c){c._dayOfYear=r(a)}),J(\\\"H\\\",[\\\"HH\\\",2],0,\\\"hour\\\"),J(\\\"h\\\",[\\\"hh\\\",2],0,cc),J(\\\"hmm\\\",0,0,function(){return\\\"\\\"+cc.apply(this)+I(this.minutes(),2)}),J(\\\"hmmss\\\",0,0,function(){return\\\"\\\"+cc.apply(this)+I(this.minutes(),2)+I(this.seconds(),2)}),J(\\\"Hmm\\\",0,0,function(){return\\\"\\\"+this.hours()+I(this.minutes(),2)}),J(\\\"Hmmss\\\",0,0,function(){return\\\"\\\"+this.hours()+I(this.minutes(),2)+I(this.seconds(),2)}),dc(\\\"a\\\",!0),dc(\\\"A\\\",!1),A(\\\"hour\\\",\\\"h\\\"),O(\\\"a\\\",ec),O(\\\"A\\\",ec),O(\\\"H\\\",hd),O(\\\"h\\\",hd),O(\\\"HH\\\",hd,dd),O(\\\"hh\\\",hd,dd),O(\\\"hmm\\\",id),O(\\\"hmmss\\\",jd),O(\\\"Hmm\\\",id),O(\\\"Hmmss\\\",jd),S([\\\"H\\\",\\\"HH\\\"],yd),S([\\\"a\\\",\\\"A\\\"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),S([\\\"h\\\",\\\"hh\\\"],function(a,b,c){b[yd]=r(a),j(c).bigHour=!0}),S(\\\"hmm\\\",function(a,b,c){var d=a.length-2;b[yd]=r(a.substr(0,d)),b[zd]=r(a.substr(d)),j(c).bigHour=!0}),S(\\\"hmmss\\\",function(a,b,c){var d=a.length-4,e=a.length-2;b[yd]=r(a.substr(0,d)),b[zd]=r(a.substr(d,2)),b[Ad]=r(a.substr(e)),j(c).bigHour=!0}),S(\\\"Hmm\\\",function(a,b,c){var d=a.length-2;b[yd]=r(a.substr(0,d)),b[zd]=r(a.substr(d))}),S(\\\"Hmmss\\\",function(a,b,c){var d=a.length-4,e=a.length-2;b[yd]=r(a.substr(0,d)),b[zd]=r(a.substr(d,2)),b[Ad]=r(a.substr(e))});var de=/[ap]\\\\.?m?\\\\.?/i,ee=E(\\\"Hours\\\",!0);J(\\\"m\\\",[\\\"mm\\\",2],0,\\\"minute\\\"),A(\\\"minute\\\",\\\"m\\\"),O(\\\"m\\\",hd),O(\\\"mm\\\",hd,dd),S([\\\"m\\\",\\\"mm\\\"],zd);var fe=E(\\\"Minutes\\\",!1);J(\\\"s\\\",[\\\"ss\\\",2],0,\\\"second\\\"),A(\\\"second\\\",\\\"s\\\"),O(\\\"s\\\",hd),O(\\\"ss\\\",hd,dd),S([\\\"s\\\",\\\"ss\\\"],Ad);var ge=E(\\\"Seconds\\\",!1);J(\\\"S\\\",0,0,function(){return~~(this.millisecond()/100)}),J(0,[\\\"SS\\\",2],0,function(){return~~(this.millisecond()/10)}),J(0,[\\\"SSS\\\",3],0,\\\"millisecond\\\"),J(0,[\\\"SSSS\\\",4],0,function(){return 10*this.millisecond()}),J(0,[\\\"SSSSS\\\",5],0,function(){return 100*this.millisecond()}),J(0,[\\\"SSSSSS\\\",6],0,function(){return 1e3*this.millisecond()}),J(0,[\\\"SSSSSSS\\\",7],0,function(){return 1e4*this.millisecond()}),J(0,[\\\"SSSSSSSS\\\",8],0,function(){return 1e5*this.millisecond()}),J(0,[\\\"SSSSSSSSS\\\",9],0,function(){return 1e6*this.millisecond()}),A(\\\"millisecond\\\",\\\"ms\\\"),O(\\\"S\\\",kd,cd),O(\\\"SS\\\",kd,dd),O(\\\"SSS\\\",kd,ed);var he;for(he=\\\"SSSS\\\";he.length<=9;he+=\\\"S\\\")O(he,nd);for(he=\\\"S\\\";he.length<=9;he+=\\\"S\\\")S(he,hc);var ie=E(\\\"Milliseconds\\\",!1);J(\\\"z\\\",0,0,\\\"zoneAbbr\\\"),J(\\\"zz\\\",0,0,\\\"zoneName\\\");var je=o.prototype;je.add=Xd,je.calendar=db,je.clone=eb,je.diff=lb,je.endOf=xb,je.format=pb,je.from=qb,je.fromNow=rb,je.to=sb,je.toNow=tb,je.get=H,je.invalidAt=Gb,je.isAfter=fb,je.isBefore=gb,je.isBetween=hb,je.isSame=ib,je.isSameOrAfter=jb,je.isSameOrBefore=kb,je.isValid=Eb,je.lang=Zd,je.locale=ub,je.localeData=vb,je.max=Sd,je.min=Rd,je.parsingFlags=Fb,je.set=H,je.startOf=wb,je.subtract=Yd,je.toArray=Bb,je.toObject=Cb,je.toDate=Ab,je.toISOString=ob,je.toJSON=Db,je.toString=nb,je.unix=zb,je.valueOf=yb,je.creationData=Hb,je.year=Qd,je.isLeapYear=na,je.weekYear=Jb,je.isoWeekYear=Kb,je.quarter=je.quarters=Pb,je.month=$,je.daysInMonth=_,je.week=je.weeks=Tb,je.isoWeek=je.isoWeeks=Ub,je.weeksInYear=Mb,je.isoWeeksInYear=Lb,je.date=_d,je.day=je.days=$b,je.weekday=_b,je.isoWeekday=ac,je.dayOfYear=bc,je.hour=je.hours=ee,je.minute=je.minutes=fe,je.second=je.seconds=ge,je.millisecond=je.milliseconds=ie,je.utcOffset=Oa,je.utc=Qa,je.local=Ra,je.parseZone=Sa,je.hasAlignedHourOffset=Ta,je.isDST=Ua,je.isDSTShifted=Va,je.isLocal=Wa,je.isUtcOffset=Xa,je.isUtc=Ya,je.isUTC=Ya,je.zoneAbbr=ic,je.zoneName=jc,je.dates=fa(\\\"dates accessor is deprecated. Use date instead.\\\",_d),je.months=fa(\\\"months accessor is deprecated. Use month instead\\\",$),je.years=fa(\\\"years accessor is deprecated. Use year instead\\\",Qd),je.zone=fa(\\\"moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779\\\",Pa);var ke=je,le={sameDay:\\\"[Today at] LT\\\",nextDay:\\\"[Tomorrow at] LT\\\",nextWeek:\\\"dddd [at] LT\\\",lastDay:\\\"[Yesterday at] LT\\\",lastWeek:\\\"[Last] dddd [at] LT\\\",sameElse:\\\"L\\\"},me={LTS:\\\"h:mm:ss A\\\",LT:\\\"h:mm A\\\",L:\\\"MM/DD/YYYY\\\",LL:\\\"MMMM D, YYYY\\\",LLL:\\\"MMMM D, YYYY h:mm A\\\",LLLL:\\\"dddd, MMMM D, YYYY h:mm A\\\"},ne=\\\"Invalid date\\\",oe=\\\"%d\\\",pe=/\\\\d{1,2}/,qe={future:\\\"in %s\\\",past:\\\"%s ago\\\",s:\\\"a few seconds\\\",m:\\\"a minute\\\",mm:\\\"%d minutes\\\",h:\\\"an hour\\\",hh:\\\"%d hours\\\",d:\\\"a day\\\",dd:\\\"%d days\\\",M:\\\"a month\\\",MM:\\\"%d months\\\",y:\\\"a year\\\",yy:\\\"%d years\\\"},re=t.prototype;re._calendar=le,re.calendar=mc,re._longDateFormat=me,re.longDateFormat=nc,re._invalidDate=ne,re.invalidDate=oc,re._ordinal=oe,re.ordinal=pc,re._ordinalParse=pe,re.preparse=qc,re.postformat=qc,re._relativeTime=qe,re.relativeTime=rc,re.pastFuture=sc,re.set=tc,re.months=W,re._months=Fd,re.monthsShort=X,re._monthsShort=Gd,re.monthsParse=Y,re._monthsRegex=Id,re.monthsRegex=ba,re._monthsShortRegex=Hd,re.monthsShortRegex=aa,re.week=Qb,re._week=$d,re.firstDayOfYear=Sb,re.firstDayOfWeek=Rb,re.weekdays=Wb,re._weekdays=ae,re.weekdaysMin=Yb,re._weekdaysMin=ce,re.weekdaysShort=Xb,re._weekdaysShort=be,re.weekdaysParse=Zb,re.isPM=fc,re._meridiemParse=de,re.meridiem=gc,x(\\\"en\\\",{ordinalParse:/\\\\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===r(a%100/10)?\\\"th\\\":1===b?\\\"st\\\":2===b?\\\"nd\\\":3===b?\\\"rd\\\":\\\"th\\\";return a+c}}),a.lang=fa(\\\"moment.lang is deprecated. Use moment.locale instead.\\\",x),a.langData=fa(\\\"moment.langData is deprecated. Use moment.localeData instead.\\\",z);var se=Math.abs,te=Lc(\\\"ms\\\"),ue=Lc(\\\"s\\\"),ve=Lc(\\\"m\\\"),we=Lc(\\\"h\\\"),xe=Lc(\\\"d\\\"),ye=Lc(\\\"w\\\"),ze=Lc(\\\"M\\\"),Ae=Lc(\\\"y\\\"),Be=Nc(\\\"milliseconds\\\"),Ce=Nc(\\\"seconds\\\"),De=Nc(\\\"minutes\\\"),Ee=Nc(\\\"hours\\\"),Fe=Nc(\\\"days\\\"),Ge=Nc(\\\"months\\\"),He=Nc(\\\"years\\\"),Ie=Math.round,Je={s:45,m:45,h:22,d:26,M:11},Ke=Math.abs,Le=Ia.prototype;Le.abs=Bc,Le.add=Dc,Le.subtract=Ec,Le.as=Jc,Le.asMilliseconds=te,Le.asSeconds=ue,Le.asMinutes=ve,Le.asHours=we,Le.asDays=xe,Le.asWeeks=ye,Le.asMonths=ze,Le.asYears=Ae,Le.valueOf=Kc,Le._bubble=Gc,Le.get=Mc,Le.milliseconds=Be,Le.seconds=Ce,Le.minutes=De,Le.hours=Ee,Le.days=Fe,Le.weeks=Oc,Le.months=Ge,Le.years=He,Le.humanize=Sc,Le.toISOString=Tc,Le.toString=Tc,Le.toJSON=Tc,Le.locale=ub,Le.localeData=vb,Le.toIsoString=fa(\\\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\\\",Tc),Le.lang=Zd,J(\\\"X\\\",0,0,\\\"unix\\\"),J(\\\"x\\\",0,0,\\\"valueOf\\\"),O(\\\"x\\\",od),O(\\\"X\\\",rd),S(\\\"X\\\",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),S(\\\"x\\\",function(a,b,c){c._d=new Date(r(a))}),a.version=\\\"2.11.1\\\",b(Ea),a.fn=ke,a.min=Ga,a.max=Ha,a.now=Td,a.utc=h,a.unix=kc,a.months=wc,a.isDate=d,a.locale=x,a.invalid=l,a.duration=Za,a.isMoment=p,a.weekdays=yc,a.parseZone=lc,a.localeData=z,a.isDuration=Ja,a.monthsShort=xc,a.weekdaysMin=Ac,a.defineLocale=y,a.weekdaysShort=zc,a.normalizeUnits=B,a.relativeTimeThreshold=Rc,a.prototype=ke;var Me=a;return Me});\"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/script-loader/~/raw-loader!../bower_components/moment/min/moment.min.js\n ** module id = 34\n ** module chunks = 1\n **/","require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\node_modules\\\\script-loader\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Desarrollo\\\\disayt.sii\\\\fuentes\\\\Disayt.SII.Web\\\\bower_components\\\\bootstrap-daterangepicker\\\\daterangepicker.js\"))\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../bower_components/bootstrap-daterangepicker/daterangepicker.js\n ** module id = 35\n ** module chunks = 1\n **/","module.exports = \"/**\\n* @version: 2.1.17\\n* @author: Dan Grossman http://www.dangrossman.info/\\n* @copyright: Copyright (c) 2012-2015 Dan Grossman. All rights reserved.\\n* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php\\n* @website: https://www.improvely.com/\\n*/\\n\\n(function(root, factory) {\\n\\n if (typeof define === 'function' && define.amd) {\\n define(['moment', 'jquery', 'exports'], function(momentjs, $, exports) {\\n root.daterangepicker = factory(root, exports, momentjs, $);\\n });\\n\\n } else if (typeof exports !== 'undefined') {\\n var momentjs = require('moment');\\n var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; //isomorphic issue\\n if (!jQuery) {\\n try {\\n jQuery = require('jquery');\\n if (!jQuery.fn) jQuery.fn = {}; //isomorphic issue\\n } catch (err) {\\n if (!jQuery) throw new Error('jQuery dependency not found');\\n }\\n }\\n\\n factory(root, exports, momentjs, jQuery);\\n\\n // Finally, as a browser global.\\n } else {\\n root.daterangepicker = factory(root, {}, root.moment || moment, (root.jQuery || root.Zepto || root.ender || root.$));\\n }\\n\\n}(this || {}, function(root, daterangepicker, moment, $) { // 'this' doesn't exist on a server\\n\\n var DateRangePicker = function(element, options, cb) {\\n\\n //default settings for options\\n this.parentEl = 'body';\\n this.element = $(element);\\n this.startDate = moment().startOf('day');\\n this.endDate = moment().endOf('day');\\n this.minDate = false;\\n this.maxDate = false;\\n this.dateLimit = false;\\n this.autoApply = false;\\n this.singleDatePicker = false;\\n this.showDropdowns = false;\\n this.showWeekNumbers = false;\\n this.timePicker = false;\\n this.timePicker24Hour = false;\\n this.timePickerIncrement = 1;\\n this.timePickerSeconds = false;\\n this.linkedCalendars = true;\\n this.autoUpdateInput = true;\\n this.ranges = {};\\n\\n this.opens = 'right';\\n if (this.element.hasClass('pull-right'))\\n this.opens = 'left';\\n\\n this.drops = 'down';\\n if (this.element.hasClass('dropup'))\\n this.drops = 'up';\\n\\n this.buttonClasses = 'btn btn-sm';\\n this.applyClass = 'btn-success';\\n this.cancelClass = 'btn-default';\\n\\n this.locale = {\\n format: 'MM/DD/YYYY',\\n separator: ' - ',\\n applyLabel: 'Apply',\\n cancelLabel: 'Cancel',\\n weekLabel: 'W',\\n customRangeLabel: 'Custom Range',\\n daysOfWeek: moment.weekdaysMin(),\\n monthNames: moment.monthsShort(),\\n firstDay: moment.localeData().firstDayOfWeek()\\n };\\n\\n this.callback = function() { };\\n\\n //some state information\\n this.isShowing = false;\\n this.leftCalendar = {};\\n this.rightCalendar = {};\\n\\n //custom options from user\\n if (typeof options !== 'object' || options === null)\\n options = {};\\n\\n //allow setting options with data attributes\\n //data-api options will be overwritten with custom javascript options\\n options = $.extend(this.element.data(), options);\\n\\n //html template for the picker UI\\n if (typeof options.template !== 'string')\\n options.template = '
' +\\n '
' +\\n '
' +\\n '' +\\n '' +\\n '
' +\\n '
' +\\n '' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n '' +\\n '' +\\n '
' +\\n '
' +\\n '' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n '
' +\\n ' ' +\\n '' +\\n '
' +\\n '
' +\\n '
';\\n\\n this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);\\n this.container = $(options.template).appendTo(this.parentEl);\\n\\n //\\n // handle all the possible options overriding defaults\\n //\\n\\n if (typeof options.locale === 'object') {\\n\\n if (typeof options.locale.format === 'string')\\n this.locale.format = options.locale.format;\\n\\n if (typeof options.locale.separator === 'string')\\n this.locale.separator = options.locale.separator;\\n\\n if (typeof options.locale.daysOfWeek === 'object')\\n this.locale.daysOfWeek = options.locale.daysOfWeek.slice();\\n\\n if (typeof options.locale.monthNames === 'object')\\n this.locale.monthNames = options.locale.monthNames.slice();\\n\\n if (typeof options.locale.firstDay === 'number')\\n this.locale.firstDay = options.locale.firstDay;\\n\\n if (typeof options.locale.applyLabel === 'string')\\n this.locale.applyLabel = options.locale.applyLabel;\\n\\n if (typeof options.locale.cancelLabel === 'string')\\n this.locale.cancelLabel = options.locale.cancelLabel;\\n\\n if (typeof options.locale.weekLabel === 'string')\\n this.locale.weekLabel = options.locale.weekLabel;\\n\\n if (typeof options.locale.customRangeLabel === 'string')\\n this.locale.customRangeLabel = options.locale.customRangeLabel;\\n\\n }\\n\\n if (typeof options.startDate === 'string')\\n this.startDate = moment(options.startDate, this.locale.format);\\n\\n if (typeof options.endDate === 'string')\\n this.endDate = moment(options.endDate, this.locale.format);\\n\\n if (typeof options.minDate === 'string')\\n this.minDate = moment(options.minDate, this.locale.format);\\n\\n if (typeof options.maxDate === 'string')\\n this.maxDate = moment(options.maxDate, this.locale.format);\\n\\n if (typeof options.startDate === 'object')\\n this.startDate = moment(options.startDate);\\n\\n if (typeof options.endDate === 'object')\\n this.endDate = moment(options.endDate);\\n\\n if (typeof options.minDate === 'object')\\n this.minDate = moment(options.minDate);\\n\\n if (typeof options.maxDate === 'object')\\n this.maxDate = moment(options.maxDate);\\n\\n // sanity check for bad options\\n if (this.minDate && this.startDate.isBefore(this.minDate))\\n this.startDate = this.minDate.clone();\\n\\n // sanity check for bad options\\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\\n this.endDate = this.maxDate.clone();\\n\\n if (typeof options.applyClass === 'string')\\n this.applyClass = options.applyClass;\\n\\n if (typeof options.cancelClass === 'string')\\n this.cancelClass = options.cancelClass;\\n\\n if (typeof options.dateLimit === 'object')\\n this.dateLimit = options.dateLimit;\\n\\n if (typeof options.opens === 'string')\\n this.opens = options.opens;\\n\\n if (typeof options.drops === 'string')\\n this.drops = options.drops;\\n\\n if (typeof options.showWeekNumbers === 'boolean')\\n this.showWeekNumbers = options.showWeekNumbers;\\n\\n if (typeof options.buttonClasses === 'string')\\n this.buttonClasses = options.buttonClasses;\\n\\n if (typeof options.buttonClasses === 'object')\\n this.buttonClasses = options.buttonClasses.join(' ');\\n\\n if (typeof options.showDropdowns === 'boolean')\\n this.showDropdowns = options.showDropdowns;\\n\\n if (typeof options.singleDatePicker === 'boolean') {\\n this.singleDatePicker = options.singleDatePicker;\\n if (this.singleDatePicker)\\n this.endDate = this.startDate.clone();\\n }\\n\\n if (typeof options.timePicker === 'boolean')\\n this.timePicker = options.timePicker;\\n\\n if (typeof options.timePickerSeconds === 'boolean')\\n this.timePickerSeconds = options.timePickerSeconds;\\n\\n if (typeof options.timePickerIncrement === 'number')\\n this.timePickerIncrement = options.timePickerIncrement;\\n\\n if (typeof options.timePicker24Hour === 'boolean')\\n this.timePicker24Hour = options.timePicker24Hour;\\n\\n if (typeof options.autoApply === 'boolean')\\n this.autoApply = options.autoApply;\\n\\n if (typeof options.autoUpdateInput === 'boolean')\\n this.autoUpdateInput = options.autoUpdateInput;\\n\\n if (typeof options.linkedCalendars === 'boolean')\\n this.linkedCalendars = options.linkedCalendars;\\n\\n if (typeof options.isInvalidDate === 'function')\\n this.isInvalidDate = options.isInvalidDate;\\n\\n // update day names order to firstDay\\n if (this.locale.firstDay != 0) {\\n var iterator = this.locale.firstDay;\\n while (iterator > 0) {\\n this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());\\n iterator--;\\n }\\n }\\n\\n var start, end, range;\\n\\n //if no start/end dates set, check if an input element contains initial values\\n if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {\\n if ($(this.element).is('input[type=text]')) {\\n var val = $(this.element).val(),\\n split = val.split(this.locale.separator);\\n\\n start = end = null;\\n\\n if (split.length == 2) {\\n start = moment(split[0], this.locale.format);\\n end = moment(split[1], this.locale.format);\\n } else if (this.singleDatePicker && val !== \\\"\\\") {\\n start = moment(val, this.locale.format);\\n end = moment(val, this.locale.format);\\n }\\n if (start !== null && end !== null) {\\n this.setStartDate(start);\\n this.setEndDate(end);\\n }\\n }\\n }\\n\\n if (typeof options.ranges === 'object') {\\n for (range in options.ranges) {\\n\\n if (typeof options.ranges[range][0] === 'string')\\n start = moment(options.ranges[range][0], this.locale.format);\\n else\\n start = moment(options.ranges[range][0]);\\n\\n if (typeof options.ranges[range][1] === 'string')\\n end = moment(options.ranges[range][1], this.locale.format);\\n else\\n end = moment(options.ranges[range][1]);\\n\\n // If the start or end date exceed those allowed by the minDate or dateLimit\\n // options, shorten the range to the allowable period.\\n if (this.minDate && start.isBefore(this.minDate))\\n start = this.minDate.clone();\\n\\n var maxDate = this.maxDate;\\n if (this.dateLimit && start.clone().add(this.dateLimit).isAfter(maxDate))\\n maxDate = start.clone().add(this.dateLimit);\\n if (maxDate && end.isAfter(maxDate))\\n end = maxDate.clone();\\n\\n // If the end of the range is before the minimum or the start of the range is\\n // after the maximum, don't display this range option at all.\\n if ((this.minDate && end.isBefore(this.minDate)) || (maxDate && start.isAfter(maxDate)))\\n continue;\\n \\n //Support unicode chars in the range names.\\n var elem = document.createElement('textarea');\\n elem.innerHTML = range;\\n var rangeHtml = elem.value;\\n\\n this.ranges[rangeHtml] = [start, end];\\n }\\n\\n var list = '
    ';\\n for (range in this.ranges) {\\n list += '
  • ' + range + '
  • ';\\n }\\n list += '
  • ' + this.locale.customRangeLabel + '
  • ';\\n list += '
';\\n this.container.find('.ranges').prepend(list);\\n }\\n\\n if (typeof cb === 'function') {\\n this.callback = cb;\\n }\\n\\n if (!this.timePicker) {\\n this.startDate = this.startDate.startOf('day');\\n this.endDate = this.endDate.endOf('day');\\n this.container.find('.calendar-time').hide();\\n }\\n\\n //can't be used together for now\\n if (this.timePicker && this.autoApply)\\n this.autoApply = false;\\n\\n if (this.autoApply && typeof options.ranges !== 'object') {\\n this.container.find('.ranges').hide();\\n } else if (this.autoApply) {\\n this.container.find('.applyBtn, .cancelBtn').addClass('hide');\\n }\\n\\n if (this.singleDatePicker) {\\n this.container.addClass('single');\\n this.container.find('.calendar.left').addClass('single');\\n this.container.find('.calendar.left').show();\\n this.container.find('.calendar.right').hide();\\n this.container.find('.daterangepicker_input input, .daterangepicker_input i').hide();\\n if (!this.timePicker) {\\n this.container.find('.ranges').hide();\\n }\\n }\\n\\n if (typeof options.ranges === 'undefined' && !this.singleDatePicker) {\\n this.container.addClass('show-calendar');\\n }\\n\\n this.container.addClass('opens' + this.opens);\\n\\n //swap the position of the predefined ranges if opens right\\n if (typeof options.ranges !== 'undefined' && this.opens == 'right') {\\n var ranges = this.container.find('.ranges');\\n var html = ranges.clone();\\n ranges.remove();\\n this.container.find('.calendar.left').parent().prepend(html);\\n }\\n\\n //apply CSS classes and labels to buttons\\n this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);\\n if (this.applyClass.length)\\n this.container.find('.applyBtn').addClass(this.applyClass);\\n if (this.cancelClass.length)\\n this.container.find('.cancelBtn').addClass(this.cancelClass);\\n this.container.find('.applyBtn').html(this.locale.applyLabel);\\n this.container.find('.cancelBtn').html(this.locale.cancelLabel);\\n\\n //\\n // event listeners\\n //\\n\\n this.container.find('.calendar')\\n .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))\\n .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))\\n .on('click.daterangepicker', 'td.available', $.proxy(this.clickDate, this))\\n .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))\\n .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this))\\n .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))\\n .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))\\n .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this))\\n .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this))\\n //.on('keyup.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this))\\n .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this));\\n\\n this.container.find('.ranges')\\n .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))\\n .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))\\n .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))\\n .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this))\\n .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this));\\n\\n if (this.element.is('input')) {\\n this.element.on({\\n 'click.daterangepicker': $.proxy(this.show, this),\\n 'focus.daterangepicker': $.proxy(this.show, this),\\n 'keyup.daterangepicker': $.proxy(this.elementChanged, this),\\n 'keydown.daterangepicker': $.proxy(this.keydown, this)\\n });\\n } else {\\n this.element.on('click.daterangepicker', $.proxy(this.toggle, this));\\n }\\n\\n //\\n // if attached to a text input, set the initial value\\n //\\n\\n if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {\\n this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\\n this.element.trigger('change');\\n } else if (this.element.is('input') && this.autoUpdateInput) {\\n this.element.val(this.startDate.format(this.locale.format));\\n this.element.trigger('change');\\n }\\n\\n };\\n\\n DateRangePicker.prototype = {\\n\\n constructor: DateRangePicker,\\n\\n setStartDate: function(startDate) {\\n if (typeof startDate === 'string')\\n this.startDate = moment(startDate, this.locale.format);\\n\\n if (typeof startDate === 'object')\\n this.startDate = moment(startDate);\\n\\n if (!this.timePicker)\\n this.startDate = this.startDate.startOf('day');\\n\\n if (this.timePicker && this.timePickerIncrement)\\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\\n\\n if (this.minDate && this.startDate.isBefore(this.minDate))\\n this.startDate = this.minDate;\\n\\n if (this.maxDate && this.startDate.isAfter(this.maxDate))\\n this.startDate = this.maxDate;\\n\\n if (!this.isShowing)\\n this.updateElement();\\n\\n this.updateMonthsInView();\\n },\\n\\n setEndDate: function(endDate) {\\n if (typeof endDate === 'string')\\n this.endDate = moment(endDate, this.locale.format);\\n\\n if (typeof endDate === 'object')\\n this.endDate = moment(endDate);\\n\\n if (!this.timePicker)\\n this.endDate = this.endDate.endOf('day');\\n\\n if (this.timePicker && this.timePickerIncrement)\\n this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\\n\\n if (this.endDate.isBefore(this.startDate))\\n this.endDate = this.startDate.clone();\\n\\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\\n this.endDate = this.maxDate;\\n\\n if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate))\\n this.endDate = this.startDate.clone().add(this.dateLimit);\\n\\n this.previousRightTime = this.endDate.clone();\\n\\n if (!this.isShowing)\\n this.updateElement();\\n\\n this.updateMonthsInView();\\n },\\n\\n isInvalidDate: function() {\\n return false;\\n },\\n\\n updateView: function() {\\n if (this.timePicker) {\\n this.renderTimePicker('left');\\n this.renderTimePicker('right');\\n if (!this.endDate) {\\n this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled');\\n } else {\\n this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled');\\n }\\n }\\n if (this.endDate) {\\n this.container.find('input[name=\\\"daterangepicker_end\\\"]').removeClass('active');\\n this.container.find('input[name=\\\"daterangepicker_start\\\"]').addClass('active');\\n } else {\\n this.container.find('input[name=\\\"daterangepicker_end\\\"]').addClass('active');\\n this.container.find('input[name=\\\"daterangepicker_start\\\"]').removeClass('active');\\n }\\n this.updateMonthsInView();\\n this.updateCalendars();\\n this.updateFormInputs();\\n },\\n\\n updateMonthsInView: function() {\\n if (this.endDate) {\\n\\n //if both dates are visible already, do nothing\\n if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&\\n (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\\n &&\\n (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\\n ) {\\n return;\\n }\\n\\n this.leftCalendar.month = this.startDate.clone().date(2);\\n if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {\\n this.rightCalendar.month = this.endDate.clone().date(2);\\n } else {\\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\\n }\\n \\n } else {\\n if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {\\n this.leftCalendar.month = this.startDate.clone().date(2);\\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\\n }\\n }\\n },\\n\\n updateCalendars: function() {\\n\\n if (this.timePicker) {\\n var hour, minute, second;\\n if (this.endDate) {\\n hour = parseInt(this.container.find('.left .hourselect').val(), 10);\\n minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\\n second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\\n if (!this.timePicker24Hour) {\\n var ampm = this.container.find('.left .ampmselect').val();\\n if (ampm === 'PM' && hour < 12)\\n hour += 12;\\n if (ampm === 'AM' && hour === 12)\\n hour = 0;\\n }\\n } else {\\n hour = parseInt(this.container.find('.right .hourselect').val(), 10);\\n minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\\n second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\\n if (!this.timePicker24Hour) {\\n var ampm = this.container.find('.right .ampmselect').val();\\n if (ampm === 'PM' && hour < 12)\\n hour += 12;\\n if (ampm === 'AM' && hour === 12)\\n hour = 0;\\n }\\n }\\n this.leftCalendar.month.hour(hour).minute(minute).second(second);\\n this.rightCalendar.month.hour(hour).minute(minute).second(second);\\n }\\n\\n this.renderCalendar('left');\\n this.renderCalendar('right');\\n\\n //highlight any predefined range matching the current start and end dates\\n this.container.find('.ranges li').removeClass('active');\\n if (this.endDate == null) return;\\n\\n var customRange = true;\\n var i = 0;\\n for (var range in this.ranges) {\\n if (this.timePicker) {\\n if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) {\\n customRange = false;\\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();\\n break;\\n }\\n } else {\\n //ignore times when comparing dates if time picker is not enabled\\n if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {\\n customRange = false;\\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();\\n break;\\n }\\n }\\n i++;\\n }\\n if (customRange) {\\n this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html();\\n this.showCalendars();\\n }\\n\\n },\\n\\n renderCalendar: function(side) {\\n\\n //\\n // Build the matrix of dates that will populate the calendar\\n //\\n\\n var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;\\n var month = calendar.month.month();\\n var year = calendar.month.year();\\n var hour = calendar.month.hour();\\n var minute = calendar.month.minute();\\n var second = calendar.month.second();\\n var daysInMonth = moment([year, month]).daysInMonth();\\n var firstDay = moment([year, month, 1]);\\n var lastDay = moment([year, month, daysInMonth]);\\n var lastMonth = moment(firstDay).subtract(1, 'month').month();\\n var lastYear = moment(firstDay).subtract(1, 'month').year();\\n var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();\\n var dayOfWeek = firstDay.day();\\n\\n //initialize a 6 rows x 7 columns array for the calendar\\n var calendar = [];\\n calendar.firstDay = firstDay;\\n calendar.lastDay = lastDay;\\n\\n for (var i = 0; i < 6; i++) {\\n calendar[i] = [];\\n }\\n\\n //populate the calendar with date objects\\n var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\\n if (startDay > daysInLastMonth)\\n startDay -= 7;\\n\\n if (dayOfWeek == this.locale.firstDay)\\n startDay = daysInLastMonth - 6;\\n\\n var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);\\n\\n var col, row;\\n for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {\\n if (i > 0 && col % 7 === 0) {\\n col = 0;\\n row++;\\n }\\n calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\\n curDate.hour(12);\\n\\n if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {\\n calendar[row][col] = this.minDate.clone();\\n }\\n\\n if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {\\n calendar[row][col] = this.maxDate.clone();\\n }\\n\\n }\\n\\n //make the calendar object available to hoverDate/clickDate\\n if (side == 'left') {\\n this.leftCalendar.calendar = calendar;\\n } else {\\n this.rightCalendar.calendar = calendar;\\n }\\n\\n //\\n // Display the calendar\\n //\\n\\n var minDate = side == 'left' ? this.minDate : this.startDate;\\n var maxDate = this.maxDate;\\n var selected = side == 'left' ? this.startDate : this.endDate;\\n\\n var html = '';\\n html += '';\\n html += '';\\n\\n // add empty cell for week number\\n if (this.showWeekNumbers)\\n html += '';\\n\\n if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {\\n html += '';\\n } else {\\n html += '';\\n }\\n\\n var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(\\\" YYYY\\\");\\n\\n if (this.showDropdowns) {\\n var currentMonth = calendar[1][1].month();\\n var currentYear = calendar[1][1].year();\\n var maxYear = (maxDate && maxDate.year()) || (currentYear + 5);\\n var minYear = (minDate && minDate.year()) || (currentYear - 50);\\n var inMinYear = currentYear == minYear;\\n var inMaxYear = currentYear == maxYear;\\n\\n var monthHtml = '\\\";\\n\\n var yearHtml = '';\\n\\n dateHtml = monthHtml + yearHtml;\\n }\\n\\n html += '';\\n if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {\\n html += '';\\n } else {\\n html += '';\\n }\\n\\n html += '';\\n html += '';\\n\\n // add week number label\\n if (this.showWeekNumbers)\\n html += '';\\n\\n $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {\\n html += '';\\n });\\n\\n html += '';\\n html += '';\\n html += '';\\n\\n //adjust maxDate to reflect the dateLimit setting in order to\\n //grey out end dates beyond the dateLimit\\n if (this.endDate == null && this.dateLimit) {\\n var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day');\\n if (!maxDate || maxLimit.isBefore(maxDate)) {\\n maxDate = maxLimit;\\n }\\n }\\n\\n for (var row = 0; row < 6; row++) {\\n html += '';\\n\\n // add week number\\n if (this.showWeekNumbers)\\n html += '';\\n\\n for (var col = 0; col < 7; col++) {\\n\\n var classes = [];\\n\\n //highlight today's date\\n if (calendar[row][col].isSame(new Date(), \\\"day\\\"))\\n classes.push('today');\\n\\n //highlight weekends\\n if (calendar[row][col].isoWeekday() > 5)\\n classes.push('weekend');\\n\\n //grey out the dates in other months displayed at beginning and end of this calendar\\n if (calendar[row][col].month() != calendar[1][1].month())\\n classes.push('off');\\n\\n //don't allow selection of dates before the minimum date\\n if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))\\n classes.push('off', 'disabled');\\n\\n //don't allow selection of dates after the maximum date\\n if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))\\n classes.push('off', 'disabled');\\n\\n //don't allow selection of date if a custom function decides it's invalid\\n if (this.isInvalidDate(calendar[row][col]))\\n classes.push('off', 'disabled');\\n\\n //highlight the currently selected start date\\n if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))\\n classes.push('active', 'start-date');\\n\\n //highlight the currently selected end date\\n if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))\\n classes.push('active', 'end-date');\\n\\n //highlight dates in-between the selected dates\\n if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)\\n classes.push('in-range');\\n\\n var cname = '', disabled = false;\\n for (var i = 0; i < classes.length; i++) {\\n cname += classes[i] + ' ';\\n if (classes[i] == 'disabled')\\n disabled = true;\\n }\\n if (!disabled)\\n cname += 'available';\\n\\n html += '';\\n\\n }\\n html += '';\\n }\\n\\n html += '';\\n html += '
' + dateHtml + '
' + this.locale.weekLabel + '' + dayOfWeek + '
' + calendar[row][0].week() + '' + calendar[row][col].date() + '
';\\n\\n this.container.find('.calendar.' + side + ' .calendar-table').html(html);\\n\\n },\\n\\n renderTimePicker: function(side) {\\n\\n var html, selected, minDate, maxDate = this.maxDate;\\n\\n if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate)))\\n maxDate = this.startDate.clone().add(this.dateLimit);\\n\\n if (side == 'left') {\\n selected = this.startDate.clone();\\n minDate = this.minDate;\\n } else if (side == 'right') {\\n selected = this.endDate ? this.endDate.clone() : this.previousRightTime.clone();\\n minDate = this.startDate;\\n\\n //Preserve the time already selected\\n var timeSelector = this.container.find('.calendar.right .calendar-time div');\\n if (timeSelector.html() != '') {\\n\\n selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour());\\n selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute());\\n selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second());\\n\\n if (!this.timePicker24Hour) {\\n var ampm = timeSelector.find('.ampmselect option:selected').val();\\n if (ampm === 'PM' && selected.hour() < 12)\\n selected.hour(selected.hour() + 12);\\n if (ampm === 'AM' && selected.hour() === 12)\\n selected.hour(0);\\n }\\n\\n if (selected.isBefore(this.startDate))\\n selected = this.startDate.clone();\\n\\n if (selected.isAfter(maxDate))\\n selected = maxDate.clone();\\n\\n }\\n }\\n\\n //\\n // hours\\n //\\n\\n html = ' ';\\n\\n //\\n // minutes\\n //\\n\\n html += ': ';\\n\\n //\\n // seconds\\n //\\n\\n if (this.timePickerSeconds) {\\n html += ': ';\\n }\\n\\n //\\n // AM/PM\\n //\\n\\n if (!this.timePicker24Hour) {\\n html += '';\\n }\\n\\n this.container.find('.calendar.' + side + ' .calendar-time div').html(html);\\n\\n },\\n\\n updateFormInputs: function() {\\n\\n //ignore mouse movements while an above-calendar text input has focus\\n if (this.container.find('input[name=daterangepicker_start]').is(\\\":focus\\\") || this.container.find('input[name=daterangepicker_end]').is(\\\":focus\\\"))\\n return;\\n\\n this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format));\\n if (this.endDate)\\n this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format));\\n\\n if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {\\n this.container.find('button.applyBtn').removeAttr('disabled');\\n } else {\\n this.container.find('button.applyBtn').attr('disabled', 'disabled');\\n }\\n\\n },\\n\\n move: function() {\\n var parentOffset = { top: 0, left: 0 },\\n containerTop;\\n var parentRightEdge = $(window).width();\\n if (!this.parentEl.is('body')) {\\n parentOffset = {\\n top: this.parentEl.offset().top - this.parentEl.scrollTop(),\\n left: this.parentEl.offset().left - this.parentEl.scrollLeft()\\n };\\n parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;\\n }\\n\\n if (this.drops == 'up')\\n containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;\\n else\\n containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;\\n this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup');\\n\\n if (this.opens == 'left') {\\n this.container.css({\\n top: containerTop,\\n right: parentRightEdge - this.element.offset().left - this.element.outerWidth(),\\n left: 'auto'\\n });\\n if (this.container.offset().left < 0) {\\n this.container.css({\\n right: 'auto',\\n left: 9\\n });\\n }\\n } else if (this.opens == 'center') {\\n this.container.css({\\n top: containerTop,\\n left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2\\n - this.container.outerWidth() / 2,\\n right: 'auto'\\n });\\n if (this.container.offset().left < 0) {\\n this.container.css({\\n right: 'auto',\\n left: 9\\n });\\n }\\n } else {\\n this.container.css({\\n top: containerTop,\\n left: this.element.offset().left - parentOffset.left,\\n right: 'auto'\\n });\\n if (this.container.offset().left + this.container.outerWidth() > $(window).width()) {\\n this.container.css({\\n left: 'auto',\\n right: 0\\n });\\n }\\n }\\n },\\n\\n show: function(e) {\\n if (this.isShowing) return;\\n\\n // Create a click proxy that is private to this instance of datepicker, for unbinding\\n this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);\\n\\n // Bind global datepicker mousedown for hiding and\\n $(document)\\n .on('mousedown.daterangepicker', this._outsideClickProxy)\\n // also support mobile devices\\n .on('touchend.daterangepicker', this._outsideClickProxy)\\n // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them\\n .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)\\n // and also close when focus changes to outside the picker (eg. tabbing between controls)\\n .on('focusin.daterangepicker', this._outsideClickProxy);\\n\\n // Reposition the picker if the window is resized while it's open\\n $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));\\n\\n this.oldStartDate = this.startDate.clone();\\n this.oldEndDate = this.endDate.clone();\\n this.previousRightTime = this.endDate.clone();\\n\\n this.updateView();\\n this.container.show();\\n this.move();\\n this.element.trigger('show.daterangepicker', this);\\n this.isShowing = true;\\n },\\n\\n hide: function(e) {\\n if (!this.isShowing) return;\\n\\n //incomplete date selection, revert to last values\\n if (!this.endDate) {\\n this.startDate = this.oldStartDate.clone();\\n this.endDate = this.oldEndDate.clone();\\n }\\n\\n //if a new date range was selected, invoke the user callback function\\n if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))\\n this.callback(this.startDate, this.endDate, this.chosenLabel);\\n\\n //if picker is attached to a text input, update it\\n this.updateElement();\\n\\n $(document).off('.daterangepicker');\\n $(window).off('.daterangepicker');\\n this.container.hide();\\n this.element.trigger('hide.daterangepicker', this);\\n this.isShowing = false;\\n },\\n\\n toggle: function(e) {\\n if (this.isShowing) {\\n this.hide();\\n } else {\\n this.show();\\n }\\n },\\n\\n outsideClick: function(e) {\\n var target = $(e.target);\\n // if the page is clicked anywhere except within the daterangerpicker/button\\n // itself then call this.hide()\\n if (\\n // ie modal dialog fix\\n e.type == \\\"focusin\\\" ||\\n target.closest(this.element).length ||\\n target.closest(this.container).length ||\\n target.closest('.calendar-table').length\\n ) return;\\n this.hide();\\n },\\n\\n showCalendars: function() {\\n this.container.addClass('show-calendar');\\n this.move();\\n this.element.trigger('showCalendar.daterangepicker', this);\\n },\\n\\n hideCalendars: function() {\\n this.container.removeClass('show-calendar');\\n this.element.trigger('hideCalendar.daterangepicker', this);\\n },\\n\\n hoverRange: function(e) {\\n\\n //ignore mouse movements while an above-calendar text input has focus\\n if (this.container.find('input[name=daterangepicker_start]').is(\\\":focus\\\") || this.container.find('input[name=daterangepicker_end]').is(\\\":focus\\\"))\\n return;\\n\\n var label = e.target.innerHTML;\\n if (label == this.locale.customRangeLabel) {\\n this.updateView();\\n } else {\\n var dates = this.ranges[label];\\n this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format));\\n this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format));\\n }\\n \\n },\\n\\n clickRange: function(e) {\\n var label = e.target.innerHTML;\\n this.chosenLabel = label;\\n if (label == this.locale.customRangeLabel) {\\n this.showCalendars();\\n } else {\\n var dates = this.ranges[label];\\n this.startDate = dates[0];\\n this.endDate = dates[1];\\n\\n if (!this.timePicker) {\\n this.startDate.startOf('day');\\n this.endDate.endOf('day');\\n }\\n\\n this.hideCalendars();\\n this.clickApply();\\n }\\n },\\n\\n clickPrev: function(e) {\\n var cal = $(e.target).parents('.calendar');\\n if (cal.hasClass('left')) {\\n this.leftCalendar.month.subtract(1, 'month');\\n if (this.linkedCalendars)\\n this.rightCalendar.month.subtract(1, 'month');\\n } else {\\n this.rightCalendar.month.subtract(1, 'month');\\n }\\n this.updateCalendars();\\n },\\n\\n clickNext: function(e) {\\n var cal = $(e.target).parents('.calendar');\\n if (cal.hasClass('left')) {\\n this.leftCalendar.month.add(1, 'month');\\n } else {\\n this.rightCalendar.month.add(1, 'month');\\n if (this.linkedCalendars)\\n this.leftCalendar.month.add(1, 'month');\\n }\\n this.updateCalendars();\\n },\\n\\n hoverDate: function(e) {\\n\\n //ignore mouse movements while an above-calendar text input has focus\\n if (this.container.find('input[name=daterangepicker_start]').is(\\\":focus\\\") || this.container.find('input[name=daterangepicker_end]').is(\\\":focus\\\"))\\n return;\\n\\n //ignore dates that can't be selected\\n if (!$(e.target).hasClass('available')) return;\\n\\n //have the text inputs above calendars reflect the date being hovered over\\n var title = $(e.target).attr('data-title');\\n var row = title.substr(1, 1);\\n var col = title.substr(3, 1);\\n var cal = $(e.target).parents('.calendar');\\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\\n\\n if (this.endDate) {\\n this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format));\\n } else {\\n this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format));\\n }\\n\\n //highlight the dates between the start date and the date being hovered as a potential end date\\n var leftCalendar = this.leftCalendar;\\n var rightCalendar = this.rightCalendar;\\n var startDate = this.startDate;\\n if (!this.endDate) {\\n this.container.find('.calendar td').each(function(index, el) {\\n\\n //skip week numbers, only look at dates\\n if ($(el).hasClass('week')) return;\\n\\n var title = $(el).attr('data-title');\\n var row = title.substr(1, 1);\\n var col = title.substr(3, 1);\\n var cal = $(el).parents('.calendar');\\n var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];\\n\\n if (dt.isAfter(startDate) && dt.isBefore(date)) {\\n $(el).addClass('in-range');\\n } else {\\n $(el).removeClass('in-range');\\n }\\n\\n });\\n }\\n\\n },\\n\\n clickDate: function(e) {\\n\\n if (!$(e.target).hasClass('available')) return;\\n\\n var title = $(e.target).attr('data-title');\\n var row = title.substr(1, 1);\\n var col = title.substr(3, 1);\\n var cal = $(e.target).parents('.calendar');\\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\\n\\n //\\n // this function needs to do a few things:\\n // * alternate between selecting a start and end date for the range,\\n // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date\\n // * if autoapply is enabled, and an end date was chosen, apply the selection\\n // * if single date picker mode, and time picker isn't enabled, apply the selection immediately\\n //\\n\\n if (this.endDate || date.isBefore(this.startDate, 'day')) {\\n if (this.timePicker) {\\n var hour = parseInt(this.container.find('.left .hourselect').val(), 10);\\n if (!this.timePicker24Hour) {\\n var ampm = cal.find('.ampmselect').val();\\n if (ampm === 'PM' && hour < 12)\\n hour += 12;\\n if (ampm === 'AM' && hour === 12)\\n hour = 0;\\n }\\n var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\\n var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\\n date = date.clone().hour(hour).minute(minute).second(second);\\n }\\n this.endDate = null;\\n this.setStartDate(date.clone());\\n } else if (!this.endDate && date.isBefore(this.startDate)) {\\n //special case: clicking the same date for start/end, \\n //but the time of the end date is before the start date\\n this.setEndDate(this.startDate.clone());\\n } else {\\n if (this.timePicker) {\\n var hour = parseInt(this.container.find('.right .hourselect').val(), 10);\\n if (!this.timePicker24Hour) {\\n var ampm = this.container.find('.right .ampmselect').val();\\n if (ampm === 'PM' && hour < 12)\\n hour += 12;\\n if (ampm === 'AM' && hour === 12)\\n hour = 0;\\n }\\n var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\\n var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\\n date = date.clone().hour(hour).minute(minute).second(second);\\n }\\n this.setEndDate(date.clone());\\n if (this.autoApply)\\n this.clickApply();\\n }\\n\\n if (this.singleDatePicker) {\\n this.setEndDate(this.startDate);\\n if (!this.timePicker)\\n this.clickApply();\\n }\\n\\n this.updateView();\\n\\n },\\n\\n clickApply: function(e) {\\n this.hide();\\n this.element.trigger('apply.daterangepicker', this);\\n },\\n\\n clickCancel: function(e) {\\n this.startDate = this.oldStartDate;\\n this.endDate = this.oldEndDate;\\n this.hide();\\n this.element.trigger('cancel.daterangepicker', this);\\n },\\n\\n monthOrYearChanged: function(e) {\\n var isLeft = $(e.target).closest('.calendar').hasClass('left'),\\n leftOrRight = isLeft ? 'left' : 'right',\\n cal = this.container.find('.calendar.'+leftOrRight);\\n\\n // Month must be Number for new moment versions\\n var month = parseInt(cal.find('.monthselect').val(), 10);\\n var year = cal.find('.yearselect').val();\\n\\n if (!isLeft) {\\n if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {\\n month = this.startDate.month();\\n year = this.startDate.year();\\n }\\n }\\n\\n if (this.minDate) {\\n if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {\\n month = this.minDate.month();\\n year = this.minDate.year();\\n }\\n }\\n\\n if (this.maxDate) {\\n if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {\\n month = this.maxDate.month();\\n year = this.maxDate.year();\\n }\\n }\\n\\n if (isLeft) {\\n this.leftCalendar.month.month(month).year(year);\\n if (this.linkedCalendars)\\n this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\\n } else {\\n this.rightCalendar.month.month(month).year(year);\\n if (this.linkedCalendars)\\n this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\\n }\\n this.updateCalendars();\\n },\\n\\n timeChanged: function(e) {\\n\\n var cal = $(e.target).closest('.calendar'),\\n isLeft = cal.hasClass('left');\\n\\n var hour = parseInt(cal.find('.hourselect').val(), 10);\\n var minute = parseInt(cal.find('.minuteselect').val(), 10);\\n var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;\\n\\n if (!this.timePicker24Hour) {\\n var ampm = cal.find('.ampmselect').val();\\n if (ampm === 'PM' && hour < 12)\\n hour += 12;\\n if (ampm === 'AM' && hour === 12)\\n hour = 0;\\n }\\n\\n if (isLeft) {\\n var start = this.startDate.clone();\\n start.hour(hour);\\n start.minute(minute);\\n start.second(second);\\n this.setStartDate(start);\\n if (this.singleDatePicker) {\\n this.endDate = this.startDate.clone();\\n } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {\\n this.setEndDate(start.clone());\\n }\\n } else if (this.endDate) {\\n var end = this.endDate.clone();\\n end.hour(hour);\\n end.minute(minute);\\n end.second(second);\\n this.setEndDate(end);\\n }\\n\\n //update the calendars so all clickable dates reflect the new time component\\n this.updateCalendars();\\n\\n //update the form inputs above the calendars with the new time\\n this.updateFormInputs();\\n\\n //re-render the time pickers because changing one selection can affect what's enabled in another\\n this.renderTimePicker('left');\\n this.renderTimePicker('right');\\n\\n },\\n\\n formInputsChanged: function(e) {\\n var isRight = $(e.target).closest('.calendar').hasClass('right');\\n var start = moment(this.container.find('input[name=\\\"daterangepicker_start\\\"]').val(), this.locale.format);\\n var end = moment(this.container.find('input[name=\\\"daterangepicker_end\\\"]').val(), this.locale.format);\\n\\n if (start.isValid() && end.isValid()) {\\n\\n if (isRight && end.isBefore(start))\\n start = end.clone();\\n\\n this.setStartDate(start);\\n this.setEndDate(end);\\n\\n if (isRight) {\\n this.container.find('input[name=\\\"daterangepicker_start\\\"]').val(this.startDate.format(this.locale.format));\\n } else {\\n this.container.find('input[name=\\\"daterangepicker_end\\\"]').val(this.endDate.format(this.locale.format));\\n }\\n\\n }\\n\\n this.updateCalendars();\\n if (this.timePicker) {\\n this.renderTimePicker('left');\\n this.renderTimePicker('right');\\n }\\n },\\n\\n elementChanged: function() {\\n if (!this.element.is('input')) return;\\n if (!this.element.val().length) return;\\n if (this.element.val().length < this.locale.format.length) return;\\n\\n var dateString = this.element.val().split(this.locale.separator),\\n start = null,\\n end = null;\\n\\n if (dateString.length === 2) {\\n start = moment(dateString[0], this.locale.format);\\n end = moment(dateString[1], this.locale.format);\\n }\\n\\n if (this.singleDatePicker || start === null || end === null) {\\n start = moment(this.element.val(), this.locale.format);\\n end = start;\\n }\\n\\n if (!start.isValid() || !end.isValid()) return;\\n\\n this.setStartDate(start);\\n this.setEndDate(end);\\n this.updateView();\\n },\\n\\n keydown: function(e) {\\n //hide on tab or enter\\n if ((e.keyCode === 9) || (e.keyCode === 13)) {\\n this.hide();\\n }\\n },\\n\\n updateElement: function() {\\n if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {\\n this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\\n this.element.trigger('change');\\n } else if (this.element.is('input') && this.autoUpdateInput) {\\n this.element.val(this.startDate.format(this.locale.format));\\n this.element.trigger('change');\\n }\\n },\\n\\n remove: function() {\\n this.container.remove();\\n this.element.off('.daterangepicker');\\n this.element.removeData();\\n }\\n\\n };\\n\\n $.fn.daterangepicker = function(options, callback) {\\n this.each(function() {\\n var el = $(this);\\n if (el.data('daterangepicker'))\\n el.data('daterangepicker').remove();\\n el.data('daterangepicker', new DateRangePicker(el, options, callback));\\n });\\n return this;\\n };\\n \\n return DateRangePicker;\\n\\n}));\\n\"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/script-loader/~/raw-loader!../bower_components/bootstrap-daterangepicker/daterangepicker.js\n ** module id = 36\n ** module chunks = 1\n **/"],"sourceRoot":""}